-
-
Notifications
You must be signed in to change notification settings - Fork 33.8k
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
v18.8.0
Platform
Darwin Tims-MacBook-Pro.local 21.6.0 Darwin Kernel Version 21.6.0: Wed Aug 10 14:28:23 PDT 2022; root:xnu-8020.141.5~2/RELEASE_ARM64_T6000 arm64
Subsystem
ECMAScript modules
What steps will reproduce the bug?
When running the following command:
node --experimental-loader ./loader.mjs ./run.mjs
Given the following context:
// loader.mjs
import './shared-dep.mjs';
console.log('loaded loader.mjs');// shared-dep.mjs
console.log('loaded shared-dep.mjs');// run.mjs
import './loader.mjs';
import './shared-dep.mjs';
console.log('loaded run.mjs');The output is as follows:
loaded shared-dep.mjs
loaded loader.mjs
loaded shared-dep.mjs
loaded loader.mjs
loaded run.mjs
Notice how the imports from --experimental-loader ./loader.mjs are reloaded once they are imported from node ./run.mjs, while the two times that shared-dep.mjs is imported as a result of the latter triggers only a single load. This looks to me like we are dealing with two ESM caches here.
How often does it reproduce? Is there a required condition?
Sharing modules between A & B when doing node --experimental-loader A B.
What is the expected behavior?
loaded shared-dep.mjs
loaded loader.mjs
loaded run.mjs
What do you see instead?
loaded shared-dep.mjs
loaded loader.mjs
loaded shared-dep.mjs
loaded loader.mjs
loaded run.mjs
Additional information
The two do share the same global.
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