Skip to content

Commit 1b6426c

Browse files
bmeckdanielleadams
authored andcommitted
esm: fix relative imports for https
PR-URL: nodejs#42119 Reviewed-By: Geoffrey Booth <[email protected]> Reviewed-By: Guy Bedford <[email protected]> Reviewed-By: Antoine du Hamel <[email protected]> Reviewed-By: Mohammed Keyvanzadeh <[email protected]> Reviewed-By: Ricky Zhou <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]>
1 parent b9da1b8 commit 1b6426c

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

lib/internal/modules/esm/resolve.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1177,7 +1177,7 @@ async function defaultResolve(specifier, context = {}, defaultResolveUnused) {
11771177
)
11781178
)
11791179
) {
1180-
return { url: specifier };
1180+
return { url: parsed.href };
11811181
}
11821182
} catch {
11831183
// Ignore exception

test/es-module/test-http-imports.mjs

+12
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ for (const { protocol, createServer } of [
6161
const host = new URL(base);
6262
host.protocol = protocol;
6363
host.hostname = hostname;
64+
// /not-found is a 404
65+
// ?redirect causes a redirect, no body. JSON.parse({status:number,location:string})
66+
// ?mime sets the content-type, string
67+
// ?body sets the body, string
6468
const server = createServer(function(_req, res) {
6569
const url = new URL(_req.url, host);
6670
const redirect = url.searchParams.get('redirect');
@@ -128,6 +132,14 @@ for (const { protocol, createServer } of [
128132
assert.strict.equal(depsNS.data, 1);
129133
assert.strict.equal(depsNS.http, ns);
130134

135+
const relativeDeps = new URL(url.href);
136+
relativeDeps.searchParams.set('body', `
137+
import * as http from "./";
138+
export {http};
139+
`);
140+
const relativeDepsNS = await import(relativeDeps.href);
141+
assert.strict.deepStrictEqual(Object.keys(relativeDepsNS), ['http']);
142+
assert.strict.equal(relativeDepsNS.http, ns);
131143
const fileDep = new URL(url.href);
132144
const { href } = pathToFileURL(path('/es-modules/message.mjs'));
133145
fileDep.searchParams.set('body', `

0 commit comments

Comments
 (0)