Skip to content

Commit 0dd4639

Browse files
aduh95targos
authored andcommitted
esm: fix support for URL instances in import.meta.resolve
PR-URL: #54690 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Jacob Smith <jacob@frende.me> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: LiviaMedeiros <livia@cirno.name> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent d6a2317 commit 0dd4639

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

‎lib/internal/modules/esm/loader.js‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,7 @@ class ModuleLoader {
498498
* @returns {{ format: string, url: URL['href'] }}
499499
*/
500500
resolve(originalSpecifier,parentURL,importAttributes){
501+
originalSpecifier=`${originalSpecifier}`;
501502
if(this.#customizations){
502503
returnthis.#customizations.resolve(originalSpecifier,parentURL,importAttributes);
503504
}
@@ -516,6 +517,7 @@ class ModuleLoader {
516517
* `import.meta.resolve` which must happen synchronously.
517518
*/
518519
resolveSync(originalSpecifier,parentURL,importAttributes){
520+
originalSpecifier=`${originalSpecifier}`;
519521
if(this.#customizations){
520522
returnthis.#customizations.resolveSync(originalSpecifier,parentURL,importAttributes);
521523
}

‎test/es-module/test-esm-import-meta-resolve.mjs‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Flags: --experimental-import-meta-resolve
2-
import'../common/index.mjs';
2+
import{spawnPromisified}from'../common/index.mjs';
33
importassertfrom'assert';
44
import{spawn}from'child_process';
55
import{execPath}from'process';
@@ -90,3 +90,20 @@ await assert.rejects(import('data:text/javascript,export default import.meta.res
9090
cp.stdin.end('import "data:text/javascript,console.log(import.meta.resolve(%22node:os%22))"');
9191
assert.match((awaitcp.stdout.toArray()).toString(),/^node:os\r?\n$/);
9292
}
93+
94+
{
95+
constresult=awaitspawnPromisified(execPath,[
96+
'--no-warnings',
97+
'--input-type=module',
98+
'--import','data:text/javascript,import{register}from"node:module";register("data:text/javascript,")',
99+
'--eval',
100+
'console.log(import.meta.resolve(new URL("http://example.com")))',
101+
]);
102+
103+
assert.deepStrictEqual(result,{
104+
code: 0,
105+
signal: null,
106+
stderr: '',
107+
stdout: 'http://example.com/\n',
108+
});
109+
}

0 commit comments

Comments
 (0)