@@ -48,7 +48,7 @@ function evalModule(source, print) {
4848 return handleMainPromise ( loadESM ( ( loader ) => loader . eval ( source ) ) ) ;
4949}
5050
51- function evalScript ( name , body , breakFirstLine , print ) {
51+ function evalScript ( name , body , breakFirstLine , print , shouldLoadESM = false ) {
5252 const CJSModule = require ( 'internal/modules/cjs/loader' ) . Module ;
5353 const { kVmBreakFirstLineSymbol } = require ( 'internal/util' ) ;
5454 const { pathToFileURL } = require ( 'url' ) ;
@@ -60,35 +60,44 @@ function evalScript(name, body, breakFirstLine, print) {
6060 module . filename = path . join ( cwd , name ) ;
6161 module . paths = CJSModule . _nodeModulePaths ( cwd ) ;
6262
63+ const { handleMainPromise } = require ( 'internal/modules/run_main' ) ;
6364 const asyncESM = require ( 'internal/process/esm_loader' ) ;
6465 const baseUrl = pathToFileURL ( module . filename ) . href ;
66+ const { loadESM } = asyncESM ;
67+
68+ const runScript = ( ) => {
69+ // Create wrapper for cache entry
70+ const script = `
71+ globalThis.module = module;
72+ globalThis.exports = exports;
73+ globalThis.__dirname = __dirname;
74+ globalThis.require = require;
75+ return (main) => main();
76+ ` ;
77+ globalThis . __filename = name ;
78+ const result = module . _compile ( script , `${ name } -wrapper` ) ( ( ) =>
79+ require ( 'vm' ) . runInThisContext ( body , {
80+ filename : name ,
81+ displayErrors : true ,
82+ [ kVmBreakFirstLineSymbol ] : ! ! breakFirstLine ,
83+ importModuleDynamically ( specifier , _ , importAssertions ) {
84+ const loader = asyncESM . esmLoader ;
85+ return loader . import ( specifier , baseUrl , importAssertions ) ;
86+ }
87+ } ) ) ;
88+ if ( print ) {
89+ const { log } = require ( 'internal/console/global' ) ;
90+ log ( result ) ;
91+ }
6592
66- // Create wrapper for cache entry
67- const script = `
68- globalThis.module = module;
69- globalThis.exports = exports;
70- globalThis.__dirname = __dirname;
71- globalThis.require = require;
72- return (main) => main();
73- ` ;
74- globalThis . __filename = name ;
75- const result = module . _compile ( script , `${ name } -wrapper` ) ( ( ) =>
76- require ( 'vm' ) . runInThisContext ( body , {
77- filename : name ,
78- displayErrors : true ,
79- [ kVmBreakFirstLineSymbol ] : ! ! breakFirstLine ,
80- importModuleDynamically ( specifier , _ , importAssertions ) {
81- const loader = asyncESM . esmLoader ;
82- return loader . import ( specifier , baseUrl , importAssertions ) ;
83- }
84- } ) ) ;
85- if ( print ) {
86- const { log } = require ( 'internal/console/global' ) ;
87- log ( result ) ;
88- }
93+ if ( origModule !== undefined )
94+ globalThis . module = origModule ;
95+ } ;
8996
90- if ( origModule !== undefined )
91- globalThis . module = origModule ;
97+ if ( shouldLoadESM ) {
98+ return handleMainPromise ( loadESM ( runScript ) ) ;
99+ }
100+ return runScript ( ) ;
92101}
93102
94103const exceptionHandlerState = {
0 commit comments