diff options
Diffstat (limited to 'cli/node/mod.rs')
-rw-r--r-- | cli/node/mod.rs | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/cli/node/mod.rs b/cli/node/mod.rs index 2ec9295dd..c265afdf6 100644 --- a/cli/node/mod.rs +++ b/cli/node/mod.rs @@ -26,11 +26,11 @@ use deno_runtime::deno_node::package_imports_resolve; use deno_runtime::deno_node::package_resolve; use deno_runtime::deno_node::NodeModuleKind; use deno_runtime::deno_node::PackageJson; +use deno_runtime::deno_node::PathClean; use deno_runtime::deno_node::RequireNpmResolver; use deno_runtime::deno_node::DEFAULT_CONDITIONS; use deno_runtime::deno_node::NODE_GLOBAL_THIS_NAME; use once_cell::sync::Lazy; -use path_clean::PathClean; use regex::Regex; use crate::file_fetcher::FileFetcher; @@ -433,9 +433,8 @@ pub fn node_resolve_npm_reference( reference: &NpmPackageReference, npm_resolver: &NpmPackageResolver, ) -> Result<Option<NodeResolution>, AnyError> { - let package_folder = npm_resolver - .resolve_package_from_deno_module(&reference.req)? - .folder_path; + let package_folder = + npm_resolver.resolve_package_folder_from_deno_module(&reference.req)?; let resolved_path = package_config_resolve( &reference .sub_path @@ -462,15 +461,28 @@ pub fn node_resolve_binary_export( bin_name: Option<&str>, npm_resolver: &NpmPackageResolver, ) -> Result<NodeResolution, AnyError> { - let pkg = npm_resolver.resolve_package_from_deno_module(pkg_req)?; - let package_folder = pkg.folder_path; + fn get_package_display_name(package_json: &PackageJson) -> String { + package_json + .name + .as_ref() + .and_then(|name| { + package_json + .version + .as_ref() + .map(|version| format!("{}@{}", name, version)) + }) + .unwrap_or_else(|| format!("{}", package_json.path.display())) + } + + let package_folder = + npm_resolver.resolve_package_folder_from_deno_module(pkg_req)?; let package_json_path = package_folder.join("package.json"); let package_json = PackageJson::load(npm_resolver, package_json_path)?; let bin = match &package_json.bin { Some(bin) => bin, None => bail!( "package {} did not have a 'bin' property in its package.json", - pkg.id + get_package_display_name(&package_json), ), }; let bin_entry = match bin { @@ -490,13 +502,13 @@ pub fn node_resolve_binary_export( o.get(&pkg_req.name) } }, - _ => bail!("package {} did not have a 'bin' property with a string or object value in its package.json", pkg.id), + _ => bail!("package {} did not have a 'bin' property with a string or object value in its package.json", get_package_display_name(&package_json)), }; let bin_entry = match bin_entry { Some(e) => e, None => bail!( "package {} did not have a 'bin' entry for {} in its package.json", - pkg.id, + get_package_display_name(&package_json), bin_name.unwrap_or(&pkg_req.name), ), }; @@ -504,7 +516,7 @@ pub fn node_resolve_binary_export( Value::String(s) => s, _ => bail!( "package {} had a non-string sub property of 'bin' in its package.json", - pkg.id + get_package_display_name(&package_json), ), }; |