From 3eaf174bfc64b7c277899abd44ae3877538028df Mon Sep 17 00:00:00 2001 From: David Sherret Date: Tue, 5 Mar 2024 19:23:51 -0500 Subject: fix(node): improve cjs tracking (#22673) We were missing saying that a file is CJS when some Deno code imported from the node_modules directory at runtime. --- cli/module_loader.rs | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) (limited to 'cli/module_loader.rs') diff --git a/cli/module_loader.rs b/cli/module_loader.rs index 0951a287c..17ec535f9 100644 --- a/cli/module_loader.rs +++ b/cli/module_loader.rs @@ -52,6 +52,7 @@ use deno_graph::Module; use deno_graph::Resolution; use deno_lockfile::Lockfile; use deno_runtime::deno_fs; +use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::permissions::PermissionsContainer; use deno_semver::npm::NpmPackageReqReference; use deno_terminal::colors; @@ -513,9 +514,13 @@ impl CliModuleLoader { if let Some(result) = self.shared.node_resolver.resolve_if_in_npm_package( specifier, referrer, + NodeResolutionMode::Execution, permissions, ) { - return result; + return match result? { + Some(res) => Ok(res.into_url()), + None => Err(generic_error("not found")), + }; } let graph = self.shared.graph_container.graph(); @@ -538,18 +543,23 @@ impl CliModuleLoader { .as_managed() .unwrap() // byonm won't create a Module::Npm .resolve_pkg_folder_from_deno_module(module.nv_reference.nv())?; - self + let maybe_resolution = self .shared .node_resolver - .resolve_package_sub_path( + .resolve_package_sub_path_from_deno_module( &package_folder, module.nv_reference.sub_path(), referrer, + NodeResolutionMode::Execution, permissions, ) .with_context(|| { format!("Could not resolve '{}'.", module.nv_reference) - })? + })?; + match maybe_resolution { + Some(res) => res.into_url(), + None => return Err(generic_error("not found")), + } } Some(Module::Node(module)) => module.specifier.clone(), Some(Module::Js(module)) => module.specifier.clone(), @@ -592,11 +602,16 @@ impl CliModuleLoader { if let Ok(reference) = NpmPackageReqReference::from_specifier(&specifier) { - return self.shared.node_resolver.resolve_req_reference( - &reference, - permissions, - referrer, - ); + return self + .shared + .node_resolver + .resolve_req_reference( + &reference, + permissions, + referrer, + NodeResolutionMode::Execution, + ) + .map(|res| res.into_url()); } } } -- cgit v1.2.3