diff options
Diffstat (limited to 'cli/worker.rs')
-rw-r--r-- | cli/worker.rs | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/cli/worker.rs b/cli/worker.rs index b29f22e6e..5d80ab6fd 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -39,6 +39,7 @@ use deno_runtime::worker::MainWorker; use deno_runtime::worker::WorkerOptions; use deno_runtime::BootstrapOptions; use deno_runtime::WorkerLogLevel; +use deno_semver::npm::NpmPackageNvReference; use deno_semver::npm::NpmPackageReqReference; use deno_semver::package::PackageReqReference; @@ -386,6 +387,9 @@ impl CliMainWorkerFactory { .npm_resolver .add_package_reqs(&[package_ref.req().clone()]) .await?; + let package_ref = shared + .npm_resolver + .resolve_pkg_nv_ref_from_pkg_req_ref(&package_ref)?; let node_resolution = self.resolve_binary_entrypoint(&package_ref, &permissions)?; let is_main_cjs = matches!(node_resolution, NodeResolution::CommonJs(_)); @@ -511,10 +515,18 @@ impl CliMainWorkerFactory { fn resolve_binary_entrypoint( &self, - package_ref: &NpmPackageReqReference, + package_ref: &NpmPackageNvReference, permissions: &PermissionsContainer, ) -> Result<NodeResolution, AnyError> { - match self.shared.node_resolver.resolve_binary_export(package_ref) { + let package_folder = self + .shared + .npm_resolver + .resolve_pkg_folder_from_deno_module(package_ref.nv())?; + match self + .shared + .node_resolver + .resolve_binary_export(&package_folder, package_ref.sub_path()) + { Ok(node_resolution) => Ok(node_resolution), Err(original_err) => { // if the binary entrypoint was not found, fallback to regular node resolution @@ -534,7 +546,7 @@ impl CliMainWorkerFactory { /// resolve the binary entrypoint using regular node resolution fn resolve_binary_entrypoint_fallback( &self, - package_ref: &NpmPackageReqReference, + package_ref: &NpmPackageNvReference, permissions: &PermissionsContainer, ) -> Result<Option<NodeResolution>, AnyError> { // only fallback if the user specified a sub path @@ -545,12 +557,16 @@ impl CliMainWorkerFactory { return Ok(None); } - let Some(resolution) = - self.shared.node_resolver.resolve_npm_req_reference( - package_ref, - NodeResolutionMode::Execution, - permissions, - )? + let package_folder = self + .shared + .npm_resolver + .resolve_pkg_folder_from_deno_module(package_ref.nv())?; + let Some(resolution) = self.shared.node_resolver.resolve_npm_reference( + &package_folder, + package_ref.sub_path(), + NodeResolutionMode::Execution, + permissions, + )? else { return Ok(None); }; |