diff options
Diffstat (limited to 'lib/internal/modules/cjs/loader.js')
-rw-r--r-- | lib/internal/modules/cjs/loader.js | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index 862b149e5a..479044a26a 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -74,9 +74,7 @@ const experimentalExports = getOptionValue('--experimental-exports'); module.exports = { wrapSafe, Module }; -let asyncESM; -let ModuleJob; -let createDynamicModule; +let asyncESM, ModuleJob, ModuleWrap, kInstantiated; const { CHAR_FORWARD_SLASH, @@ -819,21 +817,18 @@ Module.prototype.load = function(filename) { const module = ESMLoader.moduleMap.get(url); // Create module entry at load time to snapshot exports correctly const exports = this.exports; - if (module !== undefined) { // Called from cjs translator - if (module.reflect) { - module.reflect.onReady((reflect) => { - reflect.exports.default.set(exports); - }); - } + // Called from cjs translator + if (module !== undefined && module.module !== undefined) { + if (module.module.getStatus() >= kInstantiated) + module.module.setExport('default', exports); } else { // preemptively cache ESMLoader.moduleMap.set( url, - new ModuleJob(ESMLoader, url, async () => { - return createDynamicModule( - [], ['default'], url, (reflect) => { - reflect.exports.default.set(exports); - }); - }) + new ModuleJob(ESMLoader, url, () => + new ModuleWrap(function() { + this.setExport('default', exports); + }, ['default'], url) + ) ); } } @@ -1150,6 +1145,5 @@ Module.Module = Module; if (experimentalModules) { asyncESM = require('internal/process/esm_loader'); ModuleJob = require('internal/modules/esm/module_job'); - createDynamicModule = require( - 'internal/modules/esm/create_dynamic_module'); + ({ ModuleWrap, kInstantiated } = internalBinding('module_wrap')); } |