@@ -96,6 +96,12 @@ const path = require('path');
9696const { sep } = path ;
9797const { internalModuleStat } = internalBinding ( 'fs' ) ;
9898const { safeGetenv } = internalBinding ( 'credentials' ) ;
99+ const {
100+ privateSymbols : {
101+ require_private_symbol,
102+ } ,
103+ } = internalBinding ( 'util' ) ;
104+
99105const {
100106 getCjsConditions,
101107 initializeCjsConditions,
@@ -151,6 +157,20 @@ let requireDepth = 0;
151157let statCache = null ;
152158let isPreloading = false ;
153159
160+ function internalRequire ( module , id ) {
161+ validateString ( id , 'id' ) ;
162+ if ( id === '' ) {
163+ throw new ERR_INVALID_ARG_VALUE ( 'id' , id ,
164+ 'must be a non-empty string' ) ;
165+ }
166+ requireDepth ++ ;
167+ try {
168+ return Module . _load ( id , module , /* isMain */ false ) ;
169+ } finally {
170+ requireDepth -- ;
171+ }
172+ }
173+
154174function stat ( filename ) {
155175 filename = path . toNamespacedPath ( filename ) ;
156176 if ( statCache !== null ) {
@@ -205,6 +225,16 @@ function Module(id = '', parent) {
205225 this . filename = null ;
206226 this . loaded = false ;
207227 this . children = [ ] ;
228+ let redirects ;
229+ const manifest = policy ( ) ?. manifest ;
230+ if ( manifest ) {
231+ const moduleURL = pathToFileURL ( id ) ;
232+ redirects = manifest . getDependencyMapper ( moduleURL ) ;
233+ }
234+ setOwnProperty ( this , 'require' , makeRequireFunction ( this , redirects ) ) ;
235+ // Loads a module at the given file path. Returns that module's
236+ // `exports` property.
237+ this [ require_private_symbol ] = internalRequire ;
208238}
209239
210240Module . _cache = { __proto__ : null } ;
@@ -927,6 +957,7 @@ Module._load = function(request, parent, isMain) {
927957
928958 if ( isMain ) {
929959 process . mainModule = module ;
960+ setOwnProperty ( module . require , 'main' , process . mainModule ) ;
930961 module . id = '.' ;
931962 }
932963
@@ -1113,24 +1144,6 @@ Module.prototype.load = function(filename) {
11131144 cascadedLoader . cjsCache . set ( this , exports ) ;
11141145} ;
11151146
1116-
1117- // Loads a module at the given file path. Returns that module's
1118- // `exports` property.
1119- Module . prototype . require = function ( id ) {
1120- validateString ( id , 'id' ) ;
1121- if ( id === '' ) {
1122- throw new ERR_INVALID_ARG_VALUE ( 'id' , id ,
1123- 'must be a non-empty string' ) ;
1124- }
1125- requireDepth ++ ;
1126- try {
1127- return Module . _load ( id , this , /* isMain */ false ) ;
1128- } finally {
1129- requireDepth -- ;
1130- }
1131- } ;
1132-
1133-
11341147// Resolved path to process.argv[1] will be lazily placed here
11351148// (needed for setting breakpoint when called with --inspect-brk)
11361149let resolvedArgv ;
@@ -1199,11 +1212,10 @@ function wrapSafe(filename, content, cjsModuleInstance) {
11991212// Returns exception, if any.
12001213Module . prototype . _compile = function ( content , filename ) {
12011214 let moduleURL ;
1202- let redirects ;
12031215 const manifest = policy ( ) ?. manifest ;
12041216 if ( manifest ) {
12051217 moduleURL = pathToFileURL ( filename ) ;
1206- redirects = manifest . getDependencyMapper ( moduleURL ) ;
1218+ manifest . getDependencyMapper ( moduleURL ) ;
12071219 manifest . assertIntegrity ( moduleURL , content ) ;
12081220 }
12091221
@@ -1233,18 +1245,17 @@ Module.prototype._compile = function(content, filename) {
12331245 }
12341246 }
12351247 const dirname = path . dirname ( filename ) ;
1236- const require = makeRequireFunction ( this , redirects ) ;
12371248 let result ;
12381249 const exports = this . exports ;
12391250 const thisValue = exports ;
12401251 const module = this ;
12411252 if ( requireDepth === 0 ) statCache = new SafeMap ( ) ;
12421253 if ( inspectorWrapper ) {
12431254 result = inspectorWrapper ( compiledWrapper , thisValue , exports ,
1244- require , module , filename , dirname ) ;
1255+ module . require , module , filename , dirname ) ;
12451256 } else {
12461257 result = ReflectApply ( compiledWrapper , thisValue ,
1247- [ exports , require , module , filename , dirname ] ) ;
1258+ [ exports , module . require , module , filename , dirname ] ) ;
12481259 }
12491260 hasLoadedAnyUserCJSModule = true ;
12501261 if ( requireDepth === 0 ) statCache = null ;
@@ -1422,7 +1433,7 @@ Module._preloadModules = function(requests) {
14221433 }
14231434 }
14241435 for ( let n = 0 ; n < requests . length ; n ++ )
1425- parent . require ( requests [ n ] ) ;
1436+ internalRequire ( parent , requests [ n ] ) ;
14261437 isPreloading = false ;
14271438} ;
14281439
0 commit comments