summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-07-14 13:47:15 -0400
committerGitHub <noreply@github.com>2023-07-14 17:47:15 +0000
commitb83dac3b14340d452ae9a83e5f4da0104407a220 (patch)
tree94158848924d85643f542e4599628ceb79b9e8fd
parent0223ad72a999d1237162a96228f568d973b115fb (diff)
fix(npm): improve error message importing non-existent file in a node_modules npm package (#19835)
-rw-r--r--cli/npm/resolvers/local.rs11
-rw-r--r--cli/tests/integration/npm_tests.rs10
-rw-r--r--cli/tests/testdata/npm/nonexistent_file/main.js3
-rw-r--r--cli/tests/testdata/npm/nonexistent_file/main.out2
4 files changed, 21 insertions, 5 deletions
diff --git a/cli/npm/resolvers/local.rs b/cli/npm/resolvers/local.rs
index e94a91086..42cd0cc9e 100644
--- a/cli/npm/resolvers/local.rs
+++ b/cli/npm/resolvers/local.rs
@@ -14,6 +14,7 @@ use std::sync::Arc;
use crate::cache::CACHE_PERM;
use crate::npm::cache::mixed_case_package_name_decode;
use crate::util::fs::atomic_write_file;
+use crate::util::fs::canonicalize_path_maybe_not_exists_with_fs;
use crate::util::fs::symlink_dir;
use crate::util::fs::LaxSingleProcessFsFlag;
use crate::util::progress_bar::ProgressBar;
@@ -112,9 +113,13 @@ impl LocalNpmPackageResolver {
match self.maybe_resolve_folder_for_specifier(specifier) {
// Canonicalize the path so it's not pointing to the symlinked directory
// in `node_modules` directory of the referrer.
- Some(path) => {
- Ok(deno_core::strip_unc_prefix(self.fs.realpath_sync(&path)?))
- }
+ Some(path) => canonicalize_path_maybe_not_exists_with_fs(&path, |path| {
+ self
+ .fs
+ .realpath_sync(path)
+ .map_err(|err| err.into_io_error())
+ })
+ .map_err(|err| err.into()),
None => bail!("could not find npm package for '{}'", specifier),
}
}
diff --git a/cli/tests/integration/npm_tests.rs b/cli/tests/integration/npm_tests.rs
index 6da402a38..82f73be08 100644
--- a/cli/tests/integration/npm_tests.rs
+++ b/cli/tests/integration/npm_tests.rs
@@ -286,6 +286,16 @@ itest!(nonexistent_file {
exit_code: 1,
});
+itest!(nonexistent_file_node_modules_dir {
+ // there was a bug where the message was different when using a node_modules dir
+ args: "run -A --quiet --node-modules-dir npm/nonexistent_file/main.js",
+ output: "npm/nonexistent_file/main.out",
+ copy_temp_dir: Some("npm/nonexistent_file/"),
+ envs: env_vars_for_npm_tests(),
+ http_server: true,
+ exit_code: 1,
+});
+
itest!(invalid_package_name {
args: "run -A --quiet npm/invalid_package_name/main.js",
output: "npm/invalid_package_name/main.out",
diff --git a/cli/tests/testdata/npm/nonexistent_file/main.js b/cli/tests/testdata/npm/nonexistent_file/main.js
index 4e4657088..c480b0548 100644
--- a/cli/tests/testdata/npm/nonexistent_file/main.js
+++ b/cli/tests/testdata/npm/nonexistent_file/main.js
@@ -1 +1,2 @@
-import hmacSHA512 from "npm:crypto-js/hmac-sha512";
+import hmacSHA512 from "npm:crypto-js/non-existent";
+console.log(hmacSHA512);
diff --git a/cli/tests/testdata/npm/nonexistent_file/main.out b/cli/tests/testdata/npm/nonexistent_file/main.out
index 5f43f7242..baa79b1ce 100644
--- a/cli/tests/testdata/npm/nonexistent_file/main.out
+++ b/cli/tests/testdata/npm/nonexistent_file/main.out
@@ -1,4 +1,4 @@
-error: Unable to load [WILDCARD]hmac-sha512 imported from [WILDCARD]/testdata/npm/nonexistent_file/main.js
+error: Unable to load [WILDCARD]non-existent imported from [WILDCARD]main.js
Caused by:
[WILDCARD]