mirror of
https://github.com/denoland/deno.git
synced 2025-08-04 19:08:15 +00:00
fix(node): better detection for when to surface node resolution errors (#24653)
This commit is contained in:
parent
445e05a39d
commit
52ababc4bf
35 changed files with 678 additions and 519 deletions
|
@ -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,
|
||||
)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue