-
-
Notifications
You must be signed in to change notification settings - Fork 32.2k
Closed as not planned
Closed as not planned
Copy link
Labels
loadersIssues and PRs related to ES module loadersIssues and PRs related to ES module loaders
Description
Version
v22.2.0
Platform
Linux 6.6.15-2rodete2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.6.15-2rodete2 (2024-03-19) x86_64 GNU/Linux
Subsystem
No response
What steps will reproduce the bug?
Since Node.js version 22.2, ESM loader hooks no longer function inside of a worker and the Node.js application becomes unresponsive.
app.js
const { Worker, isMainThread } = require("node:worker_threads");
if (!isMainThread) {
import("./test.mjs").then(console.log).catch(console.error);
} else {
new Worker("./app.js", {
execArgv: [
'--import=data:text/javascript,import { register } from "node:module"; import { pathToFileURL } from "node:url"; register("./hooks.mjs", pathToFileURL("./"), { data: {} });',
],
});
}
hooks.mjs
export async function initialize() {
console.log('init')
}
export async function resolve(specifier, context, nextResolve) {
console.log('resolve: ' + specifier)
return nextResolve(specifier, context)
}
$ node app.js
How often does it reproduce? Is there a required condition?
Always
What is the expected behavior? Why is that the expected behavior?
init
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/test-loader-esm/test.mjs' imported from ///test-loader-esm/app.js
at finalizeResolution (node:internal/modules/esm/resolve:264:11)
at moduleResolve (node:internal/modules/esm/resolve:924:10)
at defaultResolve (node:internal/modules/esm/resolve:1148:11)
at nextResolve (node:internal/modules/esm/hooks:750:28)
at resolve (/test-loader-esm/hooks.mjs:8:10)
at nextResolve (node:internal/modules/esm/hooks:750:28)
at Hooks.resolve (node:internal/modules/esm/hooks:238:30)
at handleMessage (node:internal/modules/esm/worker:199:24)
at Immediate.checkForMessages (node:internal/modules/esm/worker:141:28)
at process.processImmediate (node:internal/timers:478:21) {
code: 'ERR_MODULE_NOT_FOUND',
url: '/test-loader-esm/test.mjs'
}
resolve: ./test.mjs
What do you see instead?
Application becomes unresponsive.
Additional information
I suspect that this is caused by #52706
lacolaco, crisbeto and melroy89Jx2H
Metadata
Metadata
Assignees
Labels
loadersIssues and PRs related to ES module loadersIssues and PRs related to ES module loaders