summaryrefslogtreecommitdiff
path: root/ext/node/02_require.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/node/02_require.js')
-rw-r--r--ext/node/02_require.js23
1 files changed, 21 insertions, 2 deletions
diff --git a/ext/node/02_require.js b/ext/node/02_require.js
index ac34a5fca..372cc8471 100644
--- a/ext/node/02_require.js
+++ b/ext/node/02_require.js
@@ -819,8 +819,27 @@
}
function createRequire(filenameOrUrl) {
- // FIXME: handle URLs and validation
- const filename = core.ops.op_require_as_file_path(filenameOrUrl);
+ let fileUrlStr;
+ if (filenameOrUrl instanceof URL) {
+ if (filenameOrUrl.protocol !== "file:") {
+ throw new Error(
+ `The argument 'filename' must be a file URL object, file URL string, or absolute path string. Received ${filenameOrUrl}`,
+ );
+ }
+ fileUrlStr = filenameOrUrl.toString();
+ } else if (typeof filenameOrUrl === "string") {
+ if (!filenameOrUrl.startsWith("file:")) {
+ throw new Error(
+ `The argument 'filename' must be a file URL object, file URL string, or absolute path string. Received ${filenameOrUrl}`,
+ );
+ }
+ fileUrlStr = filenameOrUrl;
+ } else {
+ throw new Error(
+ `The argument 'filename' must be a file URL object, file URL string, or absolute path string. Received ${filenameOrUrl}`,
+ );
+ }
+ const filename = core.ops.op_require_as_file_path(fileUrlStr);
return createRequireFromPath(filename);
}