@@ -76,7 +76,11 @@ const {
7676 maybeCacheSourceMap,
7777} = require ( 'internal/source_map/source_map_cache' ) ;
7878const { pathToFileURL, fileURLToPath, isURLInstance } = require ( 'internal/url' ) ;
79- const { deprecate, filterOwnProperties, setOwnProperty } = require ( 'internal/util' ) ;
79+ const {
80+ deprecate,
81+ filterOwnProperties,
82+ setOwnProperty,
83+ } = require ( 'internal/util' ) ;
8084const vm = require ( 'vm' ) ;
8185const assert = require ( 'internal/assert' ) ;
8286const fs = require ( 'fs' ) ;
@@ -86,6 +90,9 @@ const { sep } = path;
8690const { internalModuleStat } = internalBinding ( 'fs' ) ;
8791const packageJsonReader = require ( 'internal/modules/package_json_reader' ) ;
8892const { safeGetenv } = internalBinding ( 'credentials' ) ;
93+ const {
94+ require_private_symbol,
95+ } = internalBinding ( 'util' ) ;
8996const {
9097 makeRequireFunction,
9198 normalizeReferrerURL,
@@ -143,6 +150,20 @@ let requireDepth = 0;
143150let statCache = null ;
144151let isPreloading = false ;
145152
153+ function internalRequire ( module , id ) {
154+ validateString ( id , 'id' ) ;
155+ if ( id === '' ) {
156+ throw new ERR_INVALID_ARG_VALUE ( 'id' , id ,
157+ 'must be a non-empty string' ) ;
158+ }
159+ requireDepth ++ ;
160+ try {
161+ return Module . _load ( id , module , /* isMain */ false ) ;
162+ } finally {
163+ requireDepth -- ;
164+ }
165+ }
166+
146167function stat ( filename ) {
147168 filename = path . toNamespacedPath ( filename ) ;
148169 if ( statCache !== null ) {
@@ -169,6 +190,15 @@ function Module(id = '', parent) {
169190 this . filename = null ;
170191 this . loaded = false ;
171192 this . children = [ ] ;
193+ let redirects ;
194+ if ( policy ?. manifest ) {
195+ const moduleURL = pathToFileURL ( id ) ;
196+ redirects = policy . manifest . getDependencyMapper ( moduleURL ) ;
197+ }
198+ setOwnProperty ( this , 'require' , makeRequireFunction ( this , redirects ) ) ;
199+ // Loads a module at the given file path. Returns that module's
200+ // `exports` property.
201+ this [ require_private_symbol ] = internalRequire ;
172202}
173203
174204const builtinModules = [ ] ;
@@ -776,6 +806,7 @@ Module._load = function(request, parent, isMain) {
776806
777807 if ( isMain ) {
778808 process . mainModule = module ;
809+ setOwnProperty ( module . require , 'main' , process . mainModule ) ;
779810 module . id = '.' ;
780811 }
781812
@@ -959,24 +990,6 @@ Module.prototype.load = function(filename) {
959990 ESMLoader . cjsCache . set ( this , exports ) ;
960991} ;
961992
962-
963- // Loads a module at the given file path. Returns that module's
964- // `exports` property.
965- Module . prototype . require = function ( id ) {
966- validateString ( id , 'id' ) ;
967- if ( id === '' ) {
968- throw new ERR_INVALID_ARG_VALUE ( 'id' , id ,
969- 'must be a non-empty string' ) ;
970- }
971- requireDepth ++ ;
972- try {
973- return Module . _load ( id , this , /* isMain */ false ) ;
974- } finally {
975- requireDepth -- ;
976- }
977- } ;
978-
979-
980993// Resolved path to process.argv[1] will be lazily placed here
981994// (needed for setting breakpoint when called with --inspect-brk)
982995let resolvedArgv ;
@@ -1037,10 +1050,9 @@ function wrapSafe(filename, content, cjsModuleInstance) {
10371050// Returns exception, if any.
10381051Module . prototype . _compile = function ( content , filename ) {
10391052 let moduleURL ;
1040- let redirects ;
10411053 if ( policy ?. manifest ) {
10421054 moduleURL = pathToFileURL ( filename ) ;
1043- redirects = policy . manifest . getDependencyMapper ( moduleURL ) ;
1055+ policy . manifest . getDependencyMapper ( moduleURL ) ;
10441056 policy . manifest . assertIntegrity ( moduleURL , content ) ;
10451057 }
10461058
@@ -1071,18 +1083,17 @@ Module.prototype._compile = function(content, filename) {
10711083 }
10721084 }
10731085 const dirname = path . dirname ( filename ) ;
1074- const require = makeRequireFunction ( this , redirects ) ;
10751086 let result ;
10761087 const exports = this . exports ;
10771088 const thisValue = exports ;
10781089 const module = this ;
10791090 if ( requireDepth === 0 ) statCache = new SafeMap ( ) ;
10801091 if ( inspectorWrapper ) {
10811092 result = inspectorWrapper ( compiledWrapper , thisValue , exports ,
1082- require , module , filename , dirname ) ;
1093+ module . require , module , filename , dirname ) ;
10831094 } else {
10841095 result = ReflectApply ( compiledWrapper , thisValue ,
1085- [ exports , require , module , filename , dirname ] ) ;
1096+ [ exports , module . require , module , filename , dirname ] ) ;
10861097 }
10871098 hasLoadedAnyUserCJSModule = true ;
10881099 if ( requireDepth === 0 ) statCache = null ;
@@ -1240,7 +1251,7 @@ Module._preloadModules = function(requests) {
12401251 }
12411252 }
12421253 for ( let n = 0 ; n < requests . length ; n ++ )
1243- parent . require ( requests [ n ] ) ;
1254+ internalRequire ( parent , requests [ n ] ) ;
12441255 isPreloading = false ;
12451256} ;
12461257
0 commit comments