summaryrefslogtreecommitdiff
path: root/cli/npm/resolvers/global.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/npm/resolvers/global.rs')
-rw-r--r--cli/npm/resolvers/global.rs30
1 files changed, 19 insertions, 11 deletions
diff --git a/cli/npm/resolvers/global.rs b/cli/npm/resolvers/global.rs
index d1962ff04..1181403b2 100644
--- a/cli/npm/resolvers/global.rs
+++ b/cli/npm/resolvers/global.rs
@@ -8,6 +8,7 @@ use std::sync::Arc;
use async_trait::async_trait;
use deno_ast::ModuleSpecifier;
+use deno_core::anyhow::bail;
use deno_core::error::AnyError;
use deno_core::url::Url;
use deno_npm::resolution::PackageNotFoundFromReferrerError;
@@ -97,9 +98,11 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver {
referrer: &ModuleSpecifier,
mode: NodeResolutionMode,
) -> Result<PathBuf, AnyError> {
- let referrer_pkg_id = self
+ let Some(referrer_pkg_id) = self
.cache
- .resolve_package_folder_id_from_specifier(referrer, &self.registry_url)?;
+ .resolve_package_folder_id_from_specifier(referrer, &self.registry_url) else {
+ bail!("could not find npm package for '{}'", referrer);
+ };
let pkg = if mode.is_types() && !name.starts_with("@types/") {
// attempt to resolve the types package first, then fallback to the regular package
match self.resolve_types_package(name, &referrer_pkg_id) {
@@ -119,25 +122,30 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver {
fn resolve_package_folder_from_specifier(
&self,
specifier: &ModuleSpecifier,
- ) -> Result<PathBuf, AnyError> {
- let pkg_folder_id = self.cache.resolve_package_folder_id_from_specifier(
+ ) -> Result<Option<PathBuf>, AnyError> {
+ let Some(pkg_folder_id) = self.cache.resolve_package_folder_id_from_specifier(
specifier,
&self.registry_url,
- )?;
- Ok(
+ ) else {
+ return Ok(None);
+ };
+ Ok(Some(
self
.cache
.package_folder_for_id(&pkg_folder_id, &self.registry_url),
- )
+ ))
}
fn resolve_package_cache_folder_id_from_specifier(
&self,
specifier: &ModuleSpecifier,
- ) -> Result<NpmPackageCacheFolderId, AnyError> {
- self
- .cache
- .resolve_package_folder_id_from_specifier(specifier, &self.registry_url)
+ ) -> Result<Option<NpmPackageCacheFolderId>, AnyError> {
+ Ok(
+ self.cache.resolve_package_folder_id_from_specifier(
+ specifier,
+ &self.registry_url,
+ ),
+ )
}
async fn cache_packages(&self) -> Result<(), AnyError> {