diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-04-27 17:11:57 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-27 21:11:57 +0000 |
commit | 651e3e9e6daf3243dd21b7f66ce9738abdc39a37 (patch) | |
tree | 0417415c1a5fa79d0ae5d8f0f75561138275e34e /cli/standalone | |
parent | e0f849289fdb2c2d86f7fb04182c37012ce2bb69 (diff) |
fix(compile): certain jsr specifiers sometimes can't load (#23567)
When returning a jsr specifier for resolve it seems like deno core does
not work properly and hangs.
Closes https://github.com/denoland/deno/issues/23551
Closes https://github.com/denoland/deno/issues/23139
Diffstat (limited to 'cli/standalone')
-rw-r--r-- | cli/standalone/binary.rs | 4 | ||||
-rw-r--r-- | cli/standalone/mod.rs | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs index c96d83854..4442f5a24 100644 --- a/cli/standalone/binary.rs +++ b/cli/standalone/binary.rs @@ -488,7 +488,9 @@ impl<'a> DenoCompileBinaryWriter<'a> { // Phase 2 of the 'min sized' deno compile RFC talks // about adding this as a flag. if let Some(path) = std::env::var_os("DENORT_BIN") { - return Ok(std::fs::read(path)?); + return std::fs::read(&path).with_context(|| { + format!("Could not find denort at '{}'", path.to_string_lossy()) + }); } let target = compile_flags.resolve_target(); diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs index 8ff822f5a..3cfeb4f4c 100644 --- a/cli/standalone/mod.rs +++ b/cli/standalone/mod.rs @@ -150,6 +150,13 @@ impl ModuleLoader for EmbeddedModuleLoader { Some(resolved) => resolved, None => deno_core::resolve_import(specifier, referrer.as_str())?, }; + + if specifier.scheme() == "jsr" { + if let Some(module) = self.shared.eszip.get_module(specifier.as_str()) { + return Ok(ModuleSpecifier::parse(&module.specifier).unwrap()); + } + } + self .shared .node_resolver |