diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-07-23 20:22:24 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-24 00:22:24 +0000 |
commit | 52ababc4bf948904092cff54c2ab8b91f6b9b443 (patch) | |
tree | 77dc2fe4a9eb79ce893e1593822df4de1f564260 /cli/tsc | |
parent | 445e05a39d005eab6f7d2f1f67a7ae2d7c85b1b3 (diff) |
fix(node): better detection for when to surface node resolution errors (#24653)
Diffstat (limited to 'cli/tsc')
-rw-r--r-- | cli/tsc/mod.rs | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs index f6440266e..424b5c3d3 100644 --- a/cli/tsc/mod.rs +++ b/cli/tsc/mod.rs @@ -30,6 +30,8 @@ use deno_graph::GraphKind; use deno_graph::Module; use deno_graph::ModuleGraph; use deno_graph::ResolutionResolved; +use deno_runtime::deno_node::errors::NodeJsErrorCode; +use deno_runtime::deno_node::errors::NodeJsErrorCoded; use deno_runtime::deno_node::NodeModuleKind; use deno_runtime::deno_node::NodeResolution; use deno_runtime::deno_node::NodeResolutionMode; @@ -756,13 +758,21 @@ fn resolve_graph_specifier_types( .as_managed() .unwrap() // should never be byonm because it won't create Module::Npm .resolve_pkg_folder_from_deno_module(module.nv_reference.nv())?; - let maybe_resolution = + let res_result = npm.node_resolver.resolve_package_subpath_from_deno_module( &package_folder, module.nv_reference.sub_path(), Some(referrer), NodeResolutionMode::Types, - )?; + ); + let maybe_resolution = match res_result { + Ok(res) => Some(res), + Err(err) => match err.code() { + NodeJsErrorCode::ERR_TYPES_NOT_FOUND + | NodeJsErrorCode::ERR_MODULE_NOT_FOUND => None, + _ => return Err(err.into()), + }, + }; Ok(Some(NodeResolution::into_specifier_and_media_type( maybe_resolution, ))) @@ -805,8 +815,7 @@ fn resolve_non_graph_specifier_types( referrer_kind, NodeResolutionMode::Types, ) - .ok() - .flatten(), + .ok(), ))) } else if let Ok(npm_req_ref) = NpmPackageReqReference::from_str(specifier) { debug_assert_eq!(referrer_kind, NodeModuleKind::Esm); @@ -817,13 +826,20 @@ fn resolve_non_graph_specifier_types( let package_folder = npm .npm_resolver .resolve_pkg_folder_from_deno_module_req(npm_req_ref.req(), referrer)?; - let maybe_resolution = node_resolver - .resolve_package_subpath_from_deno_module( - &package_folder, - npm_req_ref.sub_path(), - Some(referrer), - NodeResolutionMode::Types, - )?; + let res_result = node_resolver.resolve_package_subpath_from_deno_module( + &package_folder, + npm_req_ref.sub_path(), + Some(referrer), + NodeResolutionMode::Types, + ); + let maybe_resolution = match res_result { + Ok(res) => Some(res), + Err(err) => match err.code() { + NodeJsErrorCode::ERR_TYPES_NOT_FOUND + | NodeJsErrorCode::ERR_MODULE_NOT_FOUND => None, + _ => return Err(err.into()), + }, + }; Ok(Some(NodeResolution::into_specifier_and_media_type( maybe_resolution, ))) |