summaryrefslogtreecommitdiff
path: root/ext/node/02_require.js
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2022-11-29 14:13:14 +0900
committerGitHub <noreply@github.com>2022-11-29 14:13:14 +0900
commite4fe5ee72ace30ccd1b7b6b15717164cf79f49c4 (patch)
tree833984b1e239fc82ad840bd5c43b7cb2b6f84751 /ext/node/02_require.js
parentd3299c2d6c036d3f016ef1abbe9c06e9b1656fd0 (diff)
fix(ext/node): allow absolute path in createRequire (#16853)
Co-authored-by: David Sherret <dsherret@gmail.com>
Diffstat (limited to 'ext/node/02_require.js')
-rw-r--r--ext/node/02_require.js13
1 files changed, 12 insertions, 1 deletions
diff --git a/ext/node/02_require.js b/ext/node/02_require.js
index db4329911..b5117042d 100644
--- a/ext/node/02_require.js
+++ b/ext/node/02_require.js
@@ -826,6 +826,17 @@
return require;
}
+ // Matches to:
+ // - /foo/...
+ // - \foo\...
+ // - C:/foo/...
+ // - C:\foo\...
+ const RE_START_OF_ABS_PATH = /^([/\\]|[a-zA-Z]:[/\\])/;
+
+ function isAbsolute(filenameOrUrl) {
+ return RE_START_OF_ABS_PATH.test(filenameOrUrl);
+ }
+
function createRequire(filenameOrUrl) {
let fileUrlStr;
if (filenameOrUrl instanceof URL) {
@@ -836,7 +847,7 @@
}
fileUrlStr = filenameOrUrl.toString();
} else if (typeof filenameOrUrl === "string") {
- if (!filenameOrUrl.startsWith("file:")) {
+ if (!filenameOrUrl.startsWith("file:") && !isAbsolute(filenameOrUrl)) {
throw new Error(
`The argument 'filename' must be a file URL object, file URL string, or absolute path string. Received ${filenameOrUrl}`,
);