module: simpler esm loading
This simplifies loading the experimental modules. Instead of always checking for them we should eagerly load the functions in case the experimental modules flag is passed through. PR-URL: https://github.com/nodejs/node/pull/26974 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Guy Bedford <guybedford@gmail.com>
This commit is contained in:
parent
bb98f27181
commit
86a29356f4
@ -62,13 +62,6 @@ let asyncESM;
|
||||
let ModuleJob;
|
||||
let createDynamicModule;
|
||||
|
||||
function lazyLoadESM() {
|
||||
asyncESM = require('internal/process/esm_loader');
|
||||
ModuleJob = require('internal/modules/esm/module_job');
|
||||
createDynamicModule = require(
|
||||
'internal/modules/esm/create_dynamic_module');
|
||||
}
|
||||
|
||||
const {
|
||||
CHAR_UPPERCASE_A,
|
||||
CHAR_LOWERCASE_A,
|
||||
@ -705,7 +698,6 @@ Module.prototype.load = function(filename) {
|
||||
this.loaded = true;
|
||||
|
||||
if (experimentalModules) {
|
||||
if (asyncESM === undefined) lazyLoadESM();
|
||||
const ESMLoader = asyncESM.ESMLoader;
|
||||
const url = `${pathToFileURL(filename)}`;
|
||||
const module = ESMLoader.moduleMap.get(url);
|
||||
@ -772,7 +764,6 @@ Module.prototype._compile = function(content, filename) {
|
||||
lineOffset: 0,
|
||||
displayErrors: true,
|
||||
importModuleDynamically: experimentalModules ? async (specifier) => {
|
||||
if (asyncESM === undefined) lazyLoadESM();
|
||||
const loader = await asyncESM.loaderPromise;
|
||||
return loader.import(specifier, normalizeReferrerURL(filename));
|
||||
} : undefined,
|
||||
@ -799,7 +790,6 @@ Module.prototype._compile = function(content, filename) {
|
||||
const { callbackMap } = internalBinding('module_wrap');
|
||||
callbackMap.set(compiledWrapper, {
|
||||
importModuleDynamically: async (specifier) => {
|
||||
if (asyncESM === undefined) lazyLoadESM();
|
||||
const loader = await asyncESM.loaderPromise;
|
||||
return loader.import(specifier, normalizeReferrerURL(filename));
|
||||
}
|
||||
@ -879,7 +869,6 @@ Module._extensions['.node'] = function(module, filename) {
|
||||
};
|
||||
|
||||
if (experimentalModules) {
|
||||
if (asyncESM === undefined) lazyLoadESM();
|
||||
Module._extensions['.mjs'] = function(module, filename) {
|
||||
throw new ERR_REQUIRE_ESM(filename);
|
||||
};
|
||||
@ -889,7 +878,6 @@ if (experimentalModules) {
|
||||
Module.runMain = function() {
|
||||
// Load the main module--the command line argument.
|
||||
if (experimentalModules) {
|
||||
if (asyncESM === undefined) lazyLoadESM();
|
||||
asyncESM.loaderPromise.then((loader) => {
|
||||
return loader.import(pathToFileURL(process.argv[1]).pathname);
|
||||
})
|
||||
@ -974,3 +962,11 @@ Module._initPaths();
|
||||
|
||||
// Backwards compatibility
|
||||
Module.Module = Module;
|
||||
|
||||
// We have to load the esm things after module.exports!
|
||||
if (experimentalModules) {
|
||||
asyncESM = require('internal/process/esm_loader');
|
||||
ModuleJob = require('internal/modules/esm/module_job');
|
||||
createDynamicModule = require(
|
||||
'internal/modules/esm/create_dynamic_module');
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user