mirror of
https://github.com/denoland/deno.git
synced 2024-11-24 15:19:26 -05:00
fix(info): error instead of panic for npm specifiers when using byonm (#25947)
This commit is contained in:
parent
c5c1869992
commit
d7b787792c
6 changed files with 30 additions and 4 deletions
|
@ -1144,10 +1144,6 @@ impl CliOptions {
|
||||||
DenoSubcommand::Run(run_flags) => {
|
DenoSubcommand::Run(run_flags) => {
|
||||||
if run_flags.is_stdin() {
|
if run_flags.is_stdin() {
|
||||||
resolve_url_or_path("./$deno$stdin.ts", self.initial_cwd())?
|
resolve_url_or_path("./$deno$stdin.ts", self.initial_cwd())?
|
||||||
} else if NpmPackageReqReference::from_str(&run_flags.script)
|
|
||||||
.is_ok()
|
|
||||||
{
|
|
||||||
ModuleSpecifier::parse(&run_flags.script)?
|
|
||||||
} else {
|
} else {
|
||||||
resolve_url_or_path(&run_flags.script, self.initial_cwd())?
|
resolve_url_or_path(&run_flags.script, self.initial_cwd())?
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ use crate::tools::check::TypeChecker;
|
||||||
use crate::util::file_watcher::WatcherCommunicator;
|
use crate::util::file_watcher::WatcherCommunicator;
|
||||||
use crate::util::fs::canonicalize_path;
|
use crate::util::fs::canonicalize_path;
|
||||||
use deno_config::workspace::JsrPackageConfig;
|
use deno_config::workspace::JsrPackageConfig;
|
||||||
|
use deno_core::anyhow::bail;
|
||||||
use deno_graph::source::LoaderChecksum;
|
use deno_graph::source::LoaderChecksum;
|
||||||
use deno_graph::FillFromLockfileOptions;
|
use deno_graph::FillFromLockfileOptions;
|
||||||
use deno_graph::JsrLoadError;
|
use deno_graph::JsrLoadError;
|
||||||
|
@ -593,6 +594,12 @@ impl ModuleGraphBuilder {
|
||||||
let initial_package_deps_len = graph.packages.package_deps_sum();
|
let initial_package_deps_len = graph.packages.package_deps_sum();
|
||||||
let initial_package_mappings_len = graph.packages.mappings().len();
|
let initial_package_mappings_len = graph.packages.mappings().len();
|
||||||
|
|
||||||
|
if roots.iter().any(|r| r.scheme() == "npm")
|
||||||
|
&& self.npm_resolver.as_byonm().is_some()
|
||||||
|
{
|
||||||
|
bail!("Resolving npm specifier entrypoints this way is currently not supported with \"nodeModules\": \"manual\". In the meantime, try with --node-modules-dir=auto instead");
|
||||||
|
}
|
||||||
|
|
||||||
graph.build(roots, loader, options).await;
|
graph.build(roots, loader, options).await;
|
||||||
|
|
||||||
let has_redirects_changed = graph.redirects.len() != initial_redirects_len;
|
let has_redirects_changed = graph.redirects.len() != initial_redirects_len;
|
||||||
|
|
11
tests/specs/info/byonm/__test__.jsonc
Normal file
11
tests/specs/info/byonm/__test__.jsonc
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"tempDir": true,
|
||||||
|
"steps": [{
|
||||||
|
"args": "install",
|
||||||
|
"output": "[WILDCARD]"
|
||||||
|
}, {
|
||||||
|
"args": "info npm:@denotest/add",
|
||||||
|
"output": "info.out",
|
||||||
|
"exitCode": 1
|
||||||
|
}]
|
||||||
|
}
|
6
tests/specs/info/byonm/deno.json
Normal file
6
tests/specs/info/byonm/deno.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"nodeModulesDir": "manual",
|
||||||
|
"imports": {
|
||||||
|
"chalk": "npm:@denotest/add"
|
||||||
|
}
|
||||||
|
}
|
1
tests/specs/info/byonm/info.out
Normal file
1
tests/specs/info/byonm/info.out
Normal file
|
@ -0,0 +1 @@
|
||||||
|
error: Resolving npm specifier entrypoints this way is currently not supported with "nodeModules": "manual". In the meantime, try with --node-modules-dir=auto instead
|
5
tests/specs/info/byonm/package.json
Normal file
5
tests/specs/info/byonm/package.json
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"@denotest/add": "*"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue