Closed
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
.