Skip to content

Commit da40417

Browse files
bmeckgibfahn
authored andcommitted
module: be lazy when creating CJS facades
This should remove the penalty for loading CJS that is never imported. PR-URL: #17153 Reviewed-By: Jeremiah Senkpiel <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Timothy Gu <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent a2c82c3 commit da40417

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

lib/module.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -557,15 +557,21 @@ Module.prototype.load = function(filename) {
557557
if (ESMLoader) {
558558
const url = getURLFromFilePath(filename);
559559
const urlString = `${url}`;
560+
const exports = this.exports;
560561
if (ESMLoader.moduleMap.has(urlString) !== true) {
561-
const ctx = createDynamicModule(['default'], url);
562-
ctx.reflect.exports.default.set(this.exports);
563-
ESMLoader.moduleMap.set(urlString,
564-
new ModuleJob(ESMLoader, url, async () => ctx));
562+
ESMLoader.moduleMap.set(
563+
urlString,
564+
new ModuleJob(ESMLoader, url, async () => {
565+
const ctx = createDynamicModule(
566+
['default'], url);
567+
ctx.reflect.exports.default.set(exports);
568+
return ctx;
569+
})
570+
);
565571
} else {
566572
const job = ESMLoader.moduleMap.get(urlString);
567573
if (job.reflect)
568-
job.reflect.exports.default.set(this.exports);
574+
job.reflect.exports.default.set(exports);
569575
}
570576
}
571577
};

0 commit comments

Comments
 (0)