summaryrefslogtreecommitdiff
path: root/cli/proc_state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/proc_state.rs')
-rw-r--r--cli/proc_state.rs17
1 files changed, 11 insertions, 6 deletions
diff --git a/cli/proc_state.rs b/cli/proc_state.rs
index 4d8acf524..0fd235dea 100644
--- a/cli/proc_state.rs
+++ b/cli/proc_state.rs
@@ -495,13 +495,18 @@ impl ProcState {
referrer: &str,
permissions: &mut PermissionsContainer,
) -> Result<ModuleSpecifier, AnyError> {
- if let Ok(referrer) = deno_core::resolve_url_or_path_deprecated(referrer) {
- if self.npm_resolver.in_npm_package(&referrer) {
+ // TODO(bartlomieju): ideally we shouldn't need to call `current_dir()` on each
+ // call - maybe it should be caller's responsibility to pass it as an arg?
+ let cwd = std::env::current_dir().context("Unable to get CWD")?;
+ let referrer_result = deno_core::resolve_url_or_path(referrer, &cwd);
+
+ if let Ok(referrer) = referrer_result.as_ref() {
+ if self.npm_resolver.in_npm_package(referrer) {
// we're in an npm package, so use node resolution
return self
.handle_node_resolve_result(node::node_resolve(
specifier,
- &referrer,
+ referrer,
NodeResolutionMode::Execution,
&self.npm_resolver,
permissions,
@@ -512,7 +517,7 @@ impl ProcState {
}
let graph = self.graph_container.graph();
- let maybe_resolved = match graph.get(&referrer) {
+ let maybe_resolved = match graph.get(referrer) {
Some(Module::Esm(module)) => {
module.dependencies.get(specifier).map(|d| &d.maybe_code)
}
@@ -565,9 +570,9 @@ impl ProcState {
// but sadly that's not the case due to missing APIs in V8.
let is_repl = matches!(self.options.sub_command(), DenoSubcommand::Repl(_));
let referrer = if referrer.is_empty() && is_repl {
- deno_core::resolve_path("./$deno$repl.ts", self.options.initial_cwd())?
+ deno_core::resolve_path("./$deno$repl.ts", &cwd)?
} else {
- deno_core::resolve_url_or_path_deprecated(referrer)?
+ referrer_result?
};
// FIXME(bartlomieju): this is another hack way to provide NPM specifier