mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
esm: fix imports from non-file module
Fixes: https://github.com/nodejs/node/issues/42860 PR-URL: https://github.com/nodejs/node/pull/42881 Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com> Reviewed-By: Jacob Smith <jacob@frende.me> Reviewed-By: Guy Bedford <guybedford@gmail.com>
This commit is contained in:
@@ -1015,8 +1015,6 @@ function resolveAsCommonJS(specifier, parentURL) {
|
||||
// TODO(@JakobJingleheimer): de-dupe `specifier` & `parsed`
|
||||
function checkIfDisallowedImport(specifier, parsed, parsedParentURL) {
|
||||
if (parsedParentURL) {
|
||||
const parentURL = fileURLToPath(parsedParentURL?.href);
|
||||
|
||||
if (
|
||||
parsedParentURL.protocol === 'http:' ||
|
||||
parsedParentURL.protocol === 'https:'
|
||||
@@ -1030,7 +1028,7 @@ function checkIfDisallowedImport(specifier, parsed, parsedParentURL) {
|
||||
) {
|
||||
throw new ERR_NETWORK_IMPORT_DISALLOWED(
|
||||
specifier,
|
||||
parentURL,
|
||||
parsedParentURL,
|
||||
'remote imports cannot import from a local location.'
|
||||
);
|
||||
}
|
||||
@@ -1041,14 +1039,14 @@ function checkIfDisallowedImport(specifier, parsed, parsedParentURL) {
|
||||
NativeModule.canBeRequiredWithoutScheme(specifier)) {
|
||||
throw new ERR_NETWORK_IMPORT_DISALLOWED(
|
||||
specifier,
|
||||
parentURL,
|
||||
parsedParentURL,
|
||||
'remote imports cannot import from a local location.'
|
||||
);
|
||||
}
|
||||
|
||||
throw new ERR_NETWORK_IMPORT_DISALLOWED(
|
||||
specifier,
|
||||
parentURL,
|
||||
parsedParentURL,
|
||||
'only relative and absolute specifiers are supported.'
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
const common = require('../common');
|
||||
const fixtures = require('../common/fixtures');
|
||||
const assert = require('assert');
|
||||
function createURL(mime, body) {
|
||||
return `data:${mime},${body}`;
|
||||
@@ -107,4 +108,8 @@ function createBase64URL(mime, body) {
|
||||
const module = await import(plainESMURL);
|
||||
assert.strictEqual(module.default, 2);
|
||||
}
|
||||
{
|
||||
const plainESMURL = `data:text/javascript,${encodeURIComponent(`import ${JSON.stringify(fixtures.fileURL('es-module-url', 'empty.js'))}`)}`;
|
||||
await import(plainESMURL);
|
||||
}
|
||||
})().then(common.mustCall());
|
||||
|
||||
@@ -167,7 +167,7 @@ for (const { protocol, createServer } of [
|
||||
export default 1;`);
|
||||
await assert.rejects(
|
||||
import(fileDep.href),
|
||||
{ code: 'ERR_INVALID_URL_SCHEME' }
|
||||
{ code: 'ERR_NETWORK_IMPORT_DISALLOWED' }
|
||||
);
|
||||
|
||||
const builtinDep = new URL(url.href);
|
||||
@@ -177,7 +177,7 @@ for (const { protocol, createServer } of [
|
||||
`);
|
||||
await assert.rejects(
|
||||
import(builtinDep.href),
|
||||
{ code: 'ERR_INVALID_URL_SCHEME' }
|
||||
{ code: 'ERR_NETWORK_IMPORT_DISALLOWED' }
|
||||
);
|
||||
|
||||
const unprefixedBuiltinDep = new URL(url.href);
|
||||
@@ -187,7 +187,7 @@ for (const { protocol, createServer } of [
|
||||
`);
|
||||
await assert.rejects(
|
||||
import(unprefixedBuiltinDep.href),
|
||||
{ code: 'ERR_INVALID_URL_SCHEME' }
|
||||
{ code: 'ERR_NETWORK_IMPORT_DISALLOWED' }
|
||||
);
|
||||
|
||||
const unsupportedMIME = new URL(url.href);
|
||||
|
||||
Reference in New Issue
Block a user