|
23 | 23 |
|
24 | 24 | const{ NativeModule }=require('internal/bootstrap/loaders'); |
25 | 25 | constutil=require('util'); |
26 | | -const{ decorateErrorStack }=require('internal/util'); |
27 | | -const{ getURLFromFilePath }=require('internal/url'); |
28 | 26 | constvm=require('vm'); |
29 | 27 | constassert=require('assert').ok; |
30 | 28 | constfs=require('fs'); |
@@ -53,11 +51,21 @@ const { |
53 | 51 |
|
54 | 52 | module.exports=Module; |
55 | 53 |
|
56 | | -// these are below module.exports for the circular reference |
57 | | -constasyncESM=require('internal/process/esm_loader'); |
58 | | -constModuleJob=require('internal/modules/esm/module_job'); |
59 | | -constcreateDynamicModule=require( |
60 | | -'internal/modules/esm/create_dynamic_module'); |
| 54 | +letasyncESM; |
| 55 | +letModuleJob; |
| 56 | +letcreateDynamicModule; |
| 57 | +letgetURLFromFilePath; |
| 58 | +letdecorateErrorStack; |
| 59 | + |
| 60 | +functionlazyLoadESM(){ |
| 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 | + |
61 | 69 | const{ |
62 | 70 | CHAR_UPPERCASE_A, |
63 | 71 | CHAR_LOWERCASE_A, |
@@ -497,6 +505,7 @@ Module._load = function(request, parent, isMain) { |
497 | 505 | } |
498 | 506 |
|
499 | 507 | if(experimentalModules&&isMain){ |
| 508 | +if(asyncESM===undefined)lazyLoadESM(); |
500 | 509 | asyncESM.loaderPromise.then((loader)=>{ |
501 | 510 | returnloader.import(getURLFromFilePath(request).pathname); |
502 | 511 | }) |
@@ -604,6 +613,7 @@ Module.prototype.load = function(filename) { |
604 | 613 | this.loaded=true; |
605 | 614 |
|
606 | 615 | if(experimentalModules){ |
| 616 | +if(asyncESM===undefined)lazyLoadESM(); |
607 | 617 | constESMLoader=asyncESM.ESMLoader; |
608 | 618 | consturl=getURLFromFilePath(filename); |
609 | 619 | consturlString=`${url}`; |
@@ -722,6 +732,7 @@ Module._extensions['.node'] = function(module, filename) { |
722 | 732 | }; |
723 | 733 |
|
724 | 734 | if(experimentalModules){ |
| 735 | +if(asyncESM===undefined)lazyLoadESM(); |
725 | 736 | Module._extensions['.mjs']=function(module,filename){ |
726 | 737 | thrownewERR_REQUIRE_ESM(filename); |
727 | 738 | }; |
@@ -797,5 +808,5 @@ Module._preloadModules = function(requests) { |
797 | 808 |
|
798 | 809 | Module._initPaths(); |
799 | 810 |
|
800 | | -// backwards compatibility |
| 811 | +// Backwards compatibility |
801 | 812 | Module.Module=Module; |
0 commit comments