@@ -96,6 +96,11 @@ 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' ) ;
99104const {
100105 getCjsConditions,
101106 initializeCjsConditions,
@@ -151,6 +156,20 @@ let requireDepth = 0;
151156let statCache = null ;
152157let isPreloading = false ;
153158
159+ function internalRequire ( module , id ) {
160+ validateString ( id , 'id' ) ;
161+ if ( id === '' ) {
162+ throw new ERR_INVALID_ARG_VALUE ( 'id' , id ,
163+ 'must be a non-empty string' ) ;
164+ }
165+ requireDepth ++ ;
166+ try {
167+ return Module . _load ( id , module , /* isMain */ false ) ;
168+ } finally {
169+ requireDepth -- ;
170+ }
171+ }
172+
154173function stat ( filename ) {
155174 filename = path . toNamespacedPath ( filename ) ;
156175 if ( statCache !== null ) {
@@ -205,6 +224,16 @@ function Module(id = '', parent) {
205224 this . filename = null ;
206225 this . loaded = false ;
207226 this . children = [ ] ;
227+ let redirects ;
228+ const manifest = policy ( ) ?. manifest ;
229+ if ( manifest ) {
230+ const moduleURL = pathToFileURL ( id ) ;
231+ redirects = manifest . getDependencyMapper ( moduleURL ) ;
232+ }
233+ setOwnProperty ( this , 'require' , makeRequireFunction ( this , redirects ) ) ;
234+ // Loads a module at the given file path. Returns that module's
235+ // `exports` property.
236+ this [ require_private_symbol ] = internalRequire ;
208237}
209238
210239Module . _cache = { __proto__ : null } ;
@@ -927,6 +956,7 @@ Module._load = function(request, parent, isMain) {
927956
928957 if ( isMain ) {
929958 process . mainModule = module ;
959+ setOwnProperty ( module . require , 'main' , process . mainModule ) ;
930960 module . id = '.' ;
931961 }
932962
@@ -1113,24 +1143,6 @@ Module.prototype.load = function(filename) {
11131143 cascadedLoader . cjsCache . set ( this , exports ) ;
11141144} ;
11151145
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-
11341146// Resolved path to process.argv[1] will be lazily placed here
11351147// (needed for setting breakpoint when called with --inspect-brk)
11361148let resolvedArgv ;
@@ -1199,11 +1211,10 @@ function wrapSafe(filename, content, cjsModuleInstance) {
11991211// Returns exception, if any.
12001212Module . prototype . _compile = function ( content , filename ) {
12011213 let moduleURL ;
1202- let redirects ;
12031214 const manifest = policy ( ) ?. manifest ;
12041215 if ( manifest ) {
12051216 moduleURL = pathToFileURL ( filename ) ;
1206- redirects = manifest . getDependencyMapper ( moduleURL ) ;
1217+ manifest . getDependencyMapper ( moduleURL ) ;
12071218 manifest . assertIntegrity ( moduleURL , content ) ;
12081219 }
12091220
@@ -1233,18 +1244,17 @@ Module.prototype._compile = function(content, filename) {
12331244 }
12341245 }
12351246 const dirname = path . dirname ( filename ) ;
1236- const require = makeRequireFunction ( this , redirects ) ;
12371247 let result ;
12381248 const exports = this . exports ;
12391249 const thisValue = exports ;
12401250 const module = this ;
12411251 if ( requireDepth === 0 ) statCache = new SafeMap ( ) ;
12421252 if ( inspectorWrapper ) {
12431253 result = inspectorWrapper ( compiledWrapper , thisValue , exports ,
1244- require , module , filename , dirname ) ;
1254+ module . require , module , filename , dirname ) ;
12451255 } else {
12461256 result = ReflectApply ( compiledWrapper , thisValue ,
1247- [ exports , require , module , filename , dirname ] ) ;
1257+ [ exports , module . require , module , filename , dirname ] ) ;
12481258 }
12491259 hasLoadedAnyUserCJSModule = true ;
12501260 if ( requireDepth === 0 ) statCache = null ;
@@ -1422,7 +1432,7 @@ Module._preloadModules = function(requests) {
14221432 }
14231433 }
14241434 for ( let n = 0 ; n < requests . length ; n ++ )
1425- parent . require ( requests [ n ] ) ;
1435+ internalRequire ( parent , requests [ n ] ) ;
14261436 isPreloading = false ;
14271437} ;
14281438
0 commit comments