From 651e3e9e6daf3243dd21b7f66ce9738abdc39a37 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Sat, 27 Apr 2024 17:11:57 -0400 Subject: 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 --- cli/standalone/binary.rs | 4 +++- cli/standalone/mod.rs | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'cli/standalone') 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 -- cgit v1.2.3