-
-
Notifications
You must be signed in to change notification settings - Fork 33.5k
Closed
Labels
esmIssues and PRs related to the ECMAScript Modules implementation.Issues and PRs related to the ECMAScript Modules implementation.loadersIssues and PRs related to ES module loadersIssues and PRs related to ES module loaders
Description
Version
v17.3.0
Platform
Linux paul 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Subsystem
No response
What steps will reproduce the bug?
hooks.js
exports.resolve = function (specifier, context, defaultResolve) {
console.error(specifier, context, defaultResolve);
return defaultResolve(specifier, context, defaultResolve);
}
main
console.log("Hello world");
Run
node --experimental-loader=./hooks.js ./main
How often does it reproduce? Is there a required condition?
Anytime --experimental-loader
or --experimental-specifier-resolution
is specified.
What is the expected behavior?
I expected the loader to not run for the entry module, since it is CommonJS (the default, no package.json "type":"module"
).
Indeed, this understanding is supported by the documentation.
When hooks are used they only apply to ES module loading and not to any CommonJS modules loaded.
https://nodejs.org/api/esm.html
What do you see instead?
The loader try to load the main
file and breaks.
(node:6928) ExperimentalWarning: --experimental-loader is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
file:///home/paul/dev/rivethealth/rules_javascript/main {
conditions: [ 'node', 'import', 'node-addons' ],
importAssertions: [Object: null prototype] {},
parentURL: undefined
} [Function: defaultResolve]
node:internal/errors:464
ErrorCaptureStackTrace(err);
^
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension "" for /home/paul/dev/rivethealth/rules_javascript/main
at new NodeError (node:internal/errors:371:5)
at Object.file: (node:internal/modules/esm/get_format:72:15)
at defaultGetFormat (node:internal/modules/esm/get_format:85:38)
at defaultLoad (node:internal/modules/esm/load:22:14)
at ESMLoader.load (node:internal/modules/esm/loader:359:26)
at ESMLoader.moduleProvider (node:internal/modules/esm/loader:280:58)
at new ModuleJob (node:internal/modules/esm/module_job:66:26)
at ESMLoader.#createModuleJob (node:internal/modules/esm/loader:297:17)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:261:34)
at async Promise.all (index 0) {
code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
Node.js v17.3.0
Additional information
No response
Metadata
Metadata
Assignees
Labels
esmIssues and PRs related to the ECMAScript Modules implementation.Issues and PRs related to the ECMAScript Modules implementation.loadersIssues and PRs related to ES module loadersIssues and PRs related to ES module loaders