summaryrefslogtreecommitdiff
path: root/cli/npm/managed/resolvers/local.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-04-25 10:13:55 -0400
committerGitHub <noreply@github.com>2024-04-25 14:13:55 +0000
commitbc4aa5f901d7bb9d83a18c14ab54ffafe014ccf9 (patch)
tree86df27cd02933174c7ff0492ac81824621c0be8d /cli/npm/managed/resolvers/local.rs
parent1a5b6296c5e4d6f9327b9527d94b7ad5d0acbda3 (diff)
fix(npm): do not panic hitting root dir while resolving npm package (#23556)
Closes https://github.com/denoland/deno/issues/23029
Diffstat (limited to 'cli/npm/managed/resolvers/local.rs')
-rw-r--r--cli/npm/managed/resolvers/local.rs16
1 files changed, 9 insertions, 7 deletions
diff --git a/cli/npm/managed/resolvers/local.rs b/cli/npm/managed/resolvers/local.rs
index 34e0fae09..f8d69d148 100644
--- a/cli/npm/managed/resolvers/local.rs
+++ b/cli/npm/managed/resolvers/local.rs
@@ -168,8 +168,8 @@ impl NpmPackageFsResolver for LocalNpmPackageResolver {
};
let package_root_path = self.resolve_package_root(&local_path);
let mut current_folder = package_root_path.as_path();
- loop {
- current_folder = current_folder.parent().unwrap();
+ while let Some(parent_folder) = current_folder.parent() {
+ current_folder = parent_folder;
let node_modules_folder = if current_folder.ends_with("node_modules") {
Cow::Borrowed(current_folder)
} else {
@@ -191,13 +191,15 @@ impl NpmPackageFsResolver for LocalNpmPackageResolver {
}
if current_folder == self.root_node_modules_path {
- bail!(
- "could not find package '{}' from referrer '{}'.",
- name,
- referrer
- );
+ break;
}
}
+
+ bail!(
+ "could not find package '{}' from referrer '{}'.",
+ name,
+ referrer
+ );
}
fn resolve_package_folder_from_specifier(