summaryrefslogtreecommitdiff
path: root/cli/node/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/node/mod.rs')
-rw-r--r--cli/node/mod.rs21
1 files changed, 12 insertions, 9 deletions
diff --git a/cli/node/mod.rs b/cli/node/mod.rs
index 9ab593304..dffcb7437 100644
--- a/cli/node/mod.rs
+++ b/cli/node/mod.rs
@@ -26,6 +26,7 @@ use deno_runtime::deno_node::package_resolve;
use deno_runtime::deno_node::path_to_declaration_path;
use deno_runtime::deno_node::NodeModuleKind;
use deno_runtime::deno_node::NodeModulePolyfill;
+use deno_runtime::deno_node::NodeModulePolyfillSpecifier;
use deno_runtime::deno_node::NodePermissions;
use deno_runtime::deno_node::NodeResolutionMode;
use deno_runtime::deno_node::PackageJson;
@@ -133,16 +134,18 @@ fn is_builtin_node_module(specifier: &str) -> bool {
}
pub fn resolve_builtin_node_module(specifier: &str) -> Result<Url, AnyError> {
- // NOTE(bartlomieju): `module` is special, because we don't want to use
- // `deno_std/node/module.ts`, but instead use a special shim that we
- // provide in `ext/node`.
- if specifier == "module" {
- return Ok(Url::parse("node:module").unwrap());
- }
-
if let Some(module) = find_builtin_node_module(specifier) {
- let module_url = NODE_COMPAT_URL.join(module.specifier).unwrap();
- return Ok(module_url);
+ match module.specifier {
+ // We will load the source code from the `std/node` polyfill.
+ NodeModulePolyfillSpecifier::StdNode(specifier) => {
+ let module_url = NODE_COMPAT_URL.join(specifier).unwrap();
+ return Ok(module_url);
+ }
+ // The module has already been snapshotted and is present in the binary.
+ NodeModulePolyfillSpecifier::Embedded(specifier) => {
+ return Ok(ModuleSpecifier::parse(specifier).unwrap());
+ }
+ }
}
Err(generic_error(format!(