diff options
author | qualitymanifest <qualitymanifest@gmail.com> | 2019-11-29 23:11:21 -0500 |
---|---|---|
committer | Guy Bedford <guybedford@gmail.com> | 2019-12-06 23:59:39 -0500 |
commit | 7ab21b2f5702ae0b2a5fe5d30ec356f83a95f698 (patch) | |
tree | 29feac6d2e7e37dd8f468ff58dd8d206a4e03fbb | |
parent | 6669cd138e918c6252e7c1dcb4bdfbc673105bad (diff) | |
download | android-node-v8-7ab21b2f5702ae0b2a5fe5d30ec356f83a95f698.tar.gz android-node-v8-7ab21b2f5702ae0b2a5fe5d30ec356f83a95f698.tar.bz2 android-node-v8-7ab21b2f5702ae0b2a5fe5d30ec356f83a95f698.zip |
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: https://github.com/nodejs/node/pull/30728
Fixes: https://github.com/nodejs/node/issues/30721
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
-rw-r--r-- | lib/internal/errors.js | 4 | ||||
-rw-r--r-- | lib/internal/modules/esm/default_resolve.js | 5 | ||||
-rw-r--r-- | test/es-module/test-esm-invalid-extension.js | 2 |
3 files changed, 9 insertions, 2 deletions
diff --git a/lib/internal/errors.js b/lib/internal/errors.js index 3db047cd32..8e6962e256 100644 --- a/lib/internal/errors.js +++ b/lib/internal/errors.js @@ -1228,7 +1228,9 @@ E('ERR_UNHANDLED_ERROR', E('ERR_UNKNOWN_BUILTIN_MODULE', 'No such built-in module: %s', Error); E('ERR_UNKNOWN_CREDENTIAL', '%s identifier does not exist: %s', Error); E('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError); -E('ERR_UNKNOWN_FILE_EXTENSION', 'Unknown file extension: %s', TypeError); +E('ERR_UNKNOWN_FILE_EXTENSION', + 'Unknown file extension "%s" for %s imported from %s', + TypeError); E('ERR_UNKNOWN_MODULE_FORMAT', 'Unknown module format: %s', RangeError); E('ERR_UNKNOWN_SIGNAL', 'Unknown signal: %s', TypeError); diff --git a/lib/internal/modules/esm/default_resolve.js b/lib/internal/modules/esm/default_resolve.js index c9ef3883c4..d238930164 100644 --- a/lib/internal/modules/esm/default_resolve.js +++ b/lib/internal/modules/esm/default_resolve.js @@ -116,7 +116,10 @@ function resolve(specifier, parentURL) { 'ExperimentalWarning'); format = legacyExtensionFormatMap[ext]; } else { - throw new ERR_UNKNOWN_FILE_EXTENSION(fileURLToPath(url)); + throw new ERR_UNKNOWN_FILE_EXTENSION( + ext, + fileURLToPath(url), + fileURLToPath(parentURL)); } } return { url: `${url}`, format }; diff --git a/test/es-module/test-esm-invalid-extension.js b/test/es-module/test-esm-invalid-extension.js index cdf9476b29..87b0c6691d 100644 --- a/test/es-module/test-esm-invalid-extension.js +++ b/test/es-module/test-esm-invalid-extension.js @@ -6,8 +6,10 @@ const { spawnSync } = require('child_process'); const fixture = fixtures.path('/es-modules/import-invalid-ext.mjs'); const child = spawnSync(process.execPath, [fixture]); const errMsg = 'TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension'; +const importMsg = `imported from ${fixture}`; assert.strictEqual(child.status, 1); assert.strictEqual(child.signal, null); assert.strictEqual(child.stdout.toString().trim(), ''); assert(child.stderr.toString().includes(errMsg)); +assert(child.stderr.toString().includes(importMsg)); |