summaryrefslogtreecommitdiff
path: root/cli/standalone/mod.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-03-05 19:23:51 -0500
committerGitHub <noreply@github.com>2024-03-06 00:23:51 +0000
commit3eaf174bfc64b7c277899abd44ae3877538028df (patch)
tree6a99dfd592681ca4beac81aaa9e5115e3dd801d7 /cli/standalone/mod.rs
parent3fd4b882a4bd0087ebf112615aafc314bb71e594 (diff)
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.
Diffstat (limited to 'cli/standalone/mod.rs')
-rw-r--r--cli/standalone/mod.rs38
1 files changed, 26 insertions, 12 deletions
diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs
index 312a1841d..9dff56af1 100644
--- a/cli/standalone/mod.rs
+++ b/cli/standalone/mod.rs
@@ -44,6 +44,7 @@ use deno_core::RequestedModuleType;
use deno_core::ResolutionKind;
use deno_runtime::deno_fs;
use deno_runtime::deno_node::analyze::NodeCodeTranslator;
+use deno_runtime::deno_node::NodeResolutionMode;
use deno_runtime::deno_node::NodeResolver;
use deno_runtime::deno_tls::rustls::RootCertStore;
use deno_runtime::deno_tls::RootCertStoreProvider;
@@ -111,9 +112,13 @@ impl ModuleLoader for EmbeddedModuleLoader {
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 maybe_mapped = self
@@ -128,18 +133,26 @@ impl ModuleLoader for EmbeddedModuleLoader {
.map(|r| r.as_str())
.unwrap_or(specifier);
if let Ok(reference) = NpmPackageReqReference::from_str(specifier_text) {
- 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());
}
- match maybe_mapped {
- Some(resolved) => Ok(resolved),
- None => deno_core::resolve_import(specifier, referrer.as_str())
- .map_err(|err| err.into()),
- }
+ let specifier = match maybe_mapped {
+ Some(resolved) => resolved,
+ None => deno_core::resolve_import(specifier, referrer.as_str())?,
+ };
+ self
+ .shared
+ .node_resolver
+ .handle_if_in_node_modules(specifier)
}
fn load(
@@ -452,7 +465,8 @@ pub async fn run(
Arc::new(parse_from_json(&base, &source).unwrap().import_map)
});
let cli_node_resolver = Arc::new(CliNodeResolver::new(
- cjs_resolutions.clone(),
+ Some(cjs_resolutions.clone()),
+ fs.clone(),
node_resolver.clone(),
npm_resolver.clone(),
));