Skip to content

Commit 15d48f9

Browse files
qualitymanifestMylesBorins
authored andcommitted
lib: add parent to ERR_UNKNOWN_FILE_EXTENSION
- default_resolve updated to pass parentURL into error - ERR_UNKNOWN_FILE_EXTENSION updated to include parentURL - test added to check for import message in error PR-URL: #30728 Fixes: #30721 Reviewed-By: Guy Bedford <[email protected]> Reviewed-By: Trivikram Kamat <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
1 parent a1ccf07 commit 15d48f9

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

lib/internal/errors.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1213,7 +1213,9 @@ E('ERR_UNHANDLED_ERROR',
12131213
E('ERR_UNKNOWN_BUILTIN_MODULE', 'No such built-in module: %s', Error);
12141214
E('ERR_UNKNOWN_CREDENTIAL', '%s identifier does not exist: %s', Error);
12151215
E('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError);
1216-
E('ERR_UNKNOWN_FILE_EXTENSION', 'Unknown file extension: %s', TypeError);
1216+
E('ERR_UNKNOWN_FILE_EXTENSION',
1217+
'Unknown file extension "%s" for %s imported from %s',
1218+
TypeError);
12171219
E('ERR_UNKNOWN_MODULE_FORMAT', 'Unknown module format: %s', RangeError);
12181220
E('ERR_UNKNOWN_SIGNAL', 'Unknown signal: %s', TypeError);
12191221

lib/internal/modules/esm/default_resolve.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,10 @@ function resolve(specifier, parentURL) {
114114
'ExperimentalWarning');
115115
format = legacyExtensionFormatMap[ext];
116116
} else {
117-
throw new ERR_UNKNOWN_FILE_EXTENSION(fileURLToPath(url));
117+
throw new ERR_UNKNOWN_FILE_EXTENSION(
118+
ext,
119+
fileURLToPath(url),
120+
fileURLToPath(parentURL));
118121
}
119122
}
120123
return { url: `${url}`, format };

test/es-module/test-esm-invalid-extension.js

+2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ const { spawnSync } = require('child_process');
66
const fixture = fixtures.path('/es-modules/import-invalid-ext.mjs');
77
const child = spawnSync(process.execPath, ['--experimental-modules', fixture]);
88
const errMsg = 'TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension';
9+
const importMsg = `imported from ${fixture}`;
910

1011
assert.strictEqual(child.status, 1);
1112
assert.strictEqual(child.signal, null);
1213
assert.strictEqual(child.stdout.toString().trim(), '');
1314
assert(child.stderr.toString().includes(errMsg));
15+
assert(child.stderr.toString().includes(importMsg));

0 commit comments

Comments
 (0)