Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 3aab6ce

Browse filesBrowse files
BridgeARMylesBorins
authored andcommitted
lib: lazy load necessary loaders
PR-URL: #20567 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
1 parent 486ac23 commit 3aab6ce
Copy full SHA for 3aab6ce

File tree

Expand file treeCollapse file tree

1 file changed

+19
-8
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+19
-8
lines changed
Open diff view settings
Collapse file

‎lib/internal/modules/cjs/loader.js‎

Copy file name to clipboardExpand all lines: lib/internal/modules/cjs/loader.js
+19-8Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323

2424
const { NativeModule } = require('internal/bootstrap/loaders');
2525
const util = require('util');
26-
const { decorateErrorStack } = require('internal/util');
27-
const { getURLFromFilePath } = require('internal/url');
2826
const vm = require('vm');
2927
const assert = require('assert').ok;
3028
const fs = require('fs');
@@ -53,11 +51,21 @@ const {
5351

5452
module.exports = Module;
5553

56-
// these are below module.exports for the circular reference
57-
const asyncESM = require('internal/process/esm_loader');
58-
const ModuleJob = require('internal/modules/esm/module_job');
59-
const createDynamicModule = require(
60-
'internal/modules/esm/create_dynamic_module');
54+
let asyncESM;
55+
let ModuleJob;
56+
let createDynamicModule;
57+
let getURLFromFilePath;
58+
let decorateErrorStack;
59+
60+
function lazyLoadESM() {
61+
asyncESM = require('internal/process/esm_loader');
62+
ModuleJob = require('internal/modules/esm/module_job');
63+
createDynamicModule = require(
64+
'internal/modules/esm/create_dynamic_module');
65+
decorateErrorStack = require('internal/util').decorateErrorStack;
66+
getURLFromFilePath = require('internal/url').getURLFromFilePath;
67+
}
68+
6169
const {
6270
CHAR_UPPERCASE_A,
6371
CHAR_LOWERCASE_A,
@@ -497,6 +505,7 @@ Module._load = function(request, parent, isMain) {
497505
}
498506

499507
if (experimentalModules && isMain) {
508+
if (asyncESM === undefined) lazyLoadESM();
500509
asyncESM.loaderPromise.then((loader) => {
501510
return loader.import(getURLFromFilePath(request).pathname);
502511
})
@@ -604,6 +613,7 @@ Module.prototype.load = function(filename) {
604613
this.loaded = true;
605614

606615
if (experimentalModules) {
616+
if (asyncESM === undefined) lazyLoadESM();
607617
const ESMLoader = asyncESM.ESMLoader;
608618
const url = getURLFromFilePath(filename);
609619
const urlString = `${url}`;
@@ -722,6 +732,7 @@ Module._extensions['.node'] = function(module, filename) {
722732
};
723733

724734
if (experimentalModules) {
735+
if (asyncESM === undefined) lazyLoadESM();
725736
Module._extensions['.mjs'] = function(module, filename) {
726737
throw new ERR_REQUIRE_ESM(filename);
727738
};
@@ -797,5 +808,5 @@ Module._preloadModules = function(requests) {
797808

798809
Module._initPaths();
799810

800-
// backwards compatibility
811+
// Backwards compatibility
801812
Module.Module = Module;

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.