diff --git a/cli/tests/integration/compat_tests.rs b/cli/tests/integration/compat_tests.rs index 81d2985b3b1f06..e15a19b8a31ae4 100644 --- a/cli/tests/integration/compat_tests.rs +++ b/cli/tests/integration/compat_tests.rs @@ -23,6 +23,11 @@ itest!(compat_with_import_map_and_https_imports { output: "compat/import_map_https_imports.out", }); +itest!(compat_dyn_import_rejects_with_node_compatible_error { + args: "run --quiet --compat --unstable -A compat/dyn_import_reject.js", + output: "compat/dyn_import_reject.out", +}); + #[test] fn globals_in_repl() { let (out, _err) = util::run_and_collect_output_with_args( diff --git a/cli/tests/testdata/compat/dyn_import_reject.js b/cli/tests/testdata/compat/dyn_import_reject.js new file mode 100644 index 00000000000000..f9a99f0dae90fc --- /dev/null +++ b/cli/tests/testdata/compat/dyn_import_reject.js @@ -0,0 +1,4 @@ +import("./foobar.js").catch((e) => { + console.log(e); + console.log(e.code); +}); diff --git a/cli/tests/testdata/compat/dyn_import_reject.out b/cli/tests/testdata/compat/dyn_import_reject.out new file mode 100644 index 00000000000000..6d78135b27f9c8 --- /dev/null +++ b/cli/tests/testdata/compat/dyn_import_reject.out @@ -0,0 +1,2 @@ +TypeError: Cannot load module "file:///[WILDCARD]/testdata/compat/foobar.js". +ERR_MODULE_NOT_FOUND diff --git a/core/bindings.rs b/core/bindings.rs index d1b01c2d99641d..10daee27ab93c3 100644 --- a/core/bindings.rs +++ b/core/bindings.rs @@ -244,6 +244,11 @@ pub extern "C" fn host_import_module_dynamically_callback( let message = arg.get(scope, message_key.into()).unwrap(); let exception = v8::Exception::type_error(scope, message.try_into().unwrap()); + let code_key = v8::String::new(scope, "code").unwrap(); + let code_value = + v8::String::new(scope, "ERR_MODULE_NOT_FOUND").unwrap(); + let exception_obj = exception.to_object(scope).unwrap(); + exception_obj.set(scope, code_key.into(), code_value.into()); scope.throw_exception(exception); return; }