0
0
Fork 0
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:
Bartek Iwańczuk 2019-06-18 16:23:06 +02:00 committed by Ryan Dahl
parent ed390a51ca
commit 01858f115a
12 changed files with 43 additions and 20 deletions

View file

@ -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,

View file

@ -1,2 +1,2 @@
// eslint-disable-next-line
import * as badModule from "bad-module.ts";
import * as badModule from "./bad-module.ts";

View file

@ -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])

View file

@ -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");
})();

View file

@ -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])

View file

@ -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])

View 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

View file

@ -0,0 +1,2 @@
// eslint-disable-next-line
import * as badModule from "bad-module.ts";

View 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])

View 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

View file

@ -0,0 +1,4 @@
(async (): Promise<void> => {
// eslint-disable-next-line
const badModule = await import("bad-module.ts");
})();

View 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])