mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 09:31:22 -05:00
fix: use Loader::resolve in op_fetch_module_meta_data (#2519)
This commit is contained in:
parent
ed390a51ca
commit
01858f115a
12 changed files with 43 additions and 20 deletions
18
cli/ops.rs
18
cli/ops.rs
|
@ -29,6 +29,7 @@ use deno::js_check;
|
|||
use deno::Buf;
|
||||
use deno::CoreOp;
|
||||
use deno::JSError;
|
||||
use deno::Loader;
|
||||
use deno::ModuleSpecifier;
|
||||
use deno::Op;
|
||||
use deno::OpResult;
|
||||
|
@ -507,25 +508,12 @@ fn op_fetch_module_meta_data(
|
|||
|
||||
let use_cache = !state.flags.reload;
|
||||
let no_fetch = state.flags.no_fetch;
|
||||
|
||||
// TODO(bartlomieju): I feel this is wrong - specifier is only resolved if there's an
|
||||
// import map - why it is not always resolved? Eg. "bad-module.ts" will return NotFound
|
||||
// error whilst it should return RelativeUrlWithCannotBeABaseBase error
|
||||
let resolved_specifier = match &state.import_map {
|
||||
Some(import_map) => match import_map.resolve(specifier, referrer) {
|
||||
Ok(result) => match result {
|
||||
Some(module_specifier) => module_specifier.to_string(),
|
||||
None => specifier.to_string(),
|
||||
},
|
||||
Err(err) => return Err(DenoError::from(err)),
|
||||
},
|
||||
None => specifier.to_string(),
|
||||
};
|
||||
let resolved_specifier = state.resolve(specifier, referrer, false)?;
|
||||
|
||||
let fut = state
|
||||
.dir
|
||||
.fetch_module_meta_data_async(
|
||||
&resolved_specifier,
|
||||
&resolved_specifier.to_string(),
|
||||
referrer,
|
||||
use_cache,
|
||||
no_fetch,
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
// eslint-disable-next-line
|
||||
import * as badModule from "bad-module.ts";
|
||||
import * as badModule from "./bad-module.ts";
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[WILDCARD]Uncaught NotFound: Cannot resolve module "bad-module.ts" from "[WILDCARD]/tests/error_004_missing_module.ts"
|
||||
[WILDCARD]Uncaught NotFound: Cannot resolve module "[WILDCARD]/bad-module.ts" from "[WILDCARD]/tests/error_004_missing_module.ts"
|
||||
at DenoError (js/errors.ts:[WILDCARD])
|
||||
at maybeError (js/errors.ts:[WILDCARD])
|
||||
at maybeThrowError (js/errors.ts:[WILDCARD])
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
(async (): Promise<void> => {
|
||||
// eslint-disable-next-line
|
||||
const badModule = await import("bad-module.ts");
|
||||
const badModule = await import("./bad-module.ts");
|
||||
})();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[WILDCARD]NotFound: Cannot resolve module "bad-module.ts" from "[WILDCARD]/tests/error_005_missing_dynamic_import.ts"
|
||||
[WILDCARD]NotFound: Cannot resolve module "[WILDCARD]/bad-module.ts" from "[WILDCARD]/tests/error_005_missing_dynamic_import.ts"
|
||||
at DenoError (js/errors.ts:[WILDCARD])
|
||||
at maybeError (js/errors.ts:[WILDCARD])
|
||||
at maybeThrowError (js/errors.ts:[WILDCARD])
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[WILDCARD]Uncaught NotFound: Cannot resolve module "./non-existent" from "[WILDCARD]/tests/error_006_import_ext_failure.ts"
|
||||
[WILDCARD]Uncaught NotFound: Cannot resolve module "[WILDCARD]/non-existent" from "[WILDCARD]/tests/error_006_import_ext_failure.ts"
|
||||
at DenoError (js/errors.ts:[WILDCARD])
|
||||
at maybeError (js/errors.ts:[WILDCARD])
|
||||
at maybeThrowError (js/errors.ts:[WILDCARD])
|
||||
|
|
4
tests/error_011_bad_module_specifier.test
Normal file
4
tests/error_011_bad_module_specifier.test
Normal file
|
@ -0,0 +1,4 @@
|
|||
args: run --reload tests/error_011_bad_module_specifier.ts
|
||||
check_stderr: true
|
||||
exit_code: 1
|
||||
output: tests/error_011_bad_module_specifier.ts.out
|
2
tests/error_011_bad_module_specifier.ts
Normal file
2
tests/error_011_bad_module_specifier.ts
Normal file
|
@ -0,0 +1,2 @@
|
|||
// eslint-disable-next-line
|
||||
import * as badModule from "bad-module.ts";
|
11
tests/error_011_bad_module_specifier.ts.out
Normal file
11
tests/error_011_bad_module_specifier.ts.out
Normal file
|
@ -0,0 +1,11 @@
|
|||
[WILDCARD]Uncaught RelativeUrlWithCannotBeABaseBase: relative URL with a cannot-be-a-base base
|
||||
at DenoError (js/errors.ts:[WILDCARD])
|
||||
at maybeError (js/errors.ts:[WILDCARD])
|
||||
at maybeThrowError (js/errors.ts:[WILDCARD])
|
||||
at sendSync (js/dispatch.ts:[WILDCARD])
|
||||
at fetchModuleMetaData (js/compiler.ts:[WILDCARD])
|
||||
at _resolveModule (js/compiler.ts:[WILDCARD])
|
||||
at js/compiler.ts:[WILDCARD]
|
||||
at resolveModuleNames (js/compiler.ts:[WILDCARD])
|
||||
at resolveModuleNamesWorker ([WILDCARD]typescript.js:[WILDCARD])
|
||||
at resolveModuleNamesReusingOldState ([WILDCARD]typescript.js:[WILDCARD])
|
4
tests/error_012_bad_dynamic_import_specifier.test
Normal file
4
tests/error_012_bad_dynamic_import_specifier.test
Normal file
|
@ -0,0 +1,4 @@
|
|||
args: run --reload tests/error_012_bad_dynamic_import_specifier.ts
|
||||
check_stderr: true
|
||||
exit_code: 1
|
||||
output: tests/error_012_bad_dynamic_import_specifier.ts.out
|
4
tests/error_012_bad_dynamic_import_specifier.ts
Normal file
4
tests/error_012_bad_dynamic_import_specifier.ts
Normal file
|
@ -0,0 +1,4 @@
|
|||
(async (): Promise<void> => {
|
||||
// eslint-disable-next-line
|
||||
const badModule = await import("bad-module.ts");
|
||||
})();
|
10
tests/error_012_bad_dynamic_import_specifier.ts.out
Normal file
10
tests/error_012_bad_dynamic_import_specifier.ts.out
Normal file
|
@ -0,0 +1,10 @@
|
|||
[WILDCARD]Uncaught RelativeUrlWithCannotBeABaseBase: relative URL with a cannot-be-a-base base
|
||||
at DenoError (js/errors.ts:[WILDCARD])
|
||||
at maybeError (js/errors.ts:[WILDCARD])
|
||||
at maybeThrowError (js/errors.ts:[WILDCARD])
|
||||
at sendSync (js/dispatch.ts:[WILDCARD])
|
||||
at fetchModuleMetaData (js/compiler.ts:[WILDCARD])
|
||||
at _resolveModule (js/compiler.ts:[WILDCARD])
|
||||
at js/compiler.ts:[WILDCARD]
|
||||
at resolveModuleNamesWorker ([WILDCARD])
|
||||
at resolveModuleNamesReusingOldState ([WILDCARD]typescript.js:[WILDCARD])
|
Loading…
Add table
Reference in a new issue