mirror of
https://github.com/denoland/deno.git
synced 2025-03-09 21:57:40 -04:00
fix(npm): improve error message importing non-existent file in a node_modules npm package (#19835)
This commit is contained in:
parent
2bf2438f38
commit
33ba31b390
4 changed files with 21 additions and 5 deletions
|
@ -14,6 +14,7 @@ use std::sync::Arc;
|
||||||
use crate::cache::CACHE_PERM;
|
use crate::cache::CACHE_PERM;
|
||||||
use crate::npm::cache::mixed_case_package_name_decode;
|
use crate::npm::cache::mixed_case_package_name_decode;
|
||||||
use crate::util::fs::atomic_write_file;
|
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::symlink_dir;
|
||||||
use crate::util::fs::LaxSingleProcessFsFlag;
|
use crate::util::fs::LaxSingleProcessFsFlag;
|
||||||
use crate::util::progress_bar::ProgressBar;
|
use crate::util::progress_bar::ProgressBar;
|
||||||
|
@ -112,9 +113,13 @@ impl LocalNpmPackageResolver {
|
||||||
match self.maybe_resolve_folder_for_specifier(specifier) {
|
match self.maybe_resolve_folder_for_specifier(specifier) {
|
||||||
// Canonicalize the path so it's not pointing to the symlinked directory
|
// Canonicalize the path so it's not pointing to the symlinked directory
|
||||||
// in `node_modules` directory of the referrer.
|
// in `node_modules` directory of the referrer.
|
||||||
Some(path) => {
|
Some(path) => canonicalize_path_maybe_not_exists_with_fs(&path, |path| {
|
||||||
Ok(deno_core::strip_unc_prefix(self.fs.realpath_sync(&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),
|
None => bail!("could not find npm package for '{}'", specifier),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -286,6 +286,16 @@ itest!(nonexistent_file {
|
||||||
exit_code: 1,
|
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 {
|
itest!(invalid_package_name {
|
||||||
args: "run -A --quiet npm/invalid_package_name/main.js",
|
args: "run -A --quiet npm/invalid_package_name/main.js",
|
||||||
output: "npm/invalid_package_name/main.out",
|
output: "npm/invalid_package_name/main.out",
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
import hmacSHA512 from "npm:crypto-js/hmac-sha512";
|
import hmacSHA512 from "npm:crypto-js/non-existent";
|
||||||
|
console.log(hmacSHA512);
|
||||||
|
|
|
@ -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:
|
Caused by:
|
||||||
[WILDCARD]
|
[WILDCARD]
|
||||||
|
|
Loading…
Add table
Reference in a new issue