diff options
| author | Yoshiya Hinosawa <stibium121@gmail.com> | 2022-11-29 14:13:14 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-29 14:13:14 +0900 |
| commit | e4fe5ee72ace30ccd1b7b6b15717164cf79f49c4 (patch) | |
| tree | 833984b1e239fc82ad840bd5c43b7cb2b6f84751 /ext/node/02_require.js | |
| parent | d3299c2d6c036d3f016ef1abbe9c06e9b1656fd0 (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.js | 13 |
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}`, ); |
