@@ -48,7 +48,7 @@ function evalModule(source, print) {
48
48
return handleMainPromise ( loadESM ( ( loader ) => loader . eval ( source ) ) ) ;
49
49
}
50
50
51
- function evalScript ( name , body , breakFirstLine , print ) {
51
+ function evalScript ( name , body , breakFirstLine , print , shouldLoadESM = false ) {
52
52
const CJSModule = require ( 'internal/modules/cjs/loader' ) . Module ;
53
53
const { kVmBreakFirstLineSymbol } = require ( 'internal/util' ) ;
54
54
const { pathToFileURL } = require ( 'url' ) ;
@@ -60,35 +60,44 @@ function evalScript(name, body, breakFirstLine, print) {
60
60
module . filename = path . join ( cwd , name ) ;
61
61
module . paths = CJSModule . _nodeModulePaths ( cwd ) ;
62
62
63
+ const { handleMainPromise } = require ( 'internal/modules/run_main' ) ;
63
64
const asyncESM = require ( 'internal/process/esm_loader' ) ;
64
65
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
+ }
65
92
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
+ } ;
89
96
90
- if ( origModule !== undefined )
91
- globalThis . module = origModule ;
97
+ if ( shouldLoadESM ) {
98
+ return handleMainPromise ( loadESM ( runScript ) ) ;
99
+ }
100
+ return runScript ( ) ;
92
101
}
93
102
94
103
const exceptionHandlerState = {
0 commit comments