@@ -95,6 +95,9 @@ const { sep } = path;
95
95
const { internalModuleStat } = internalBinding ( 'fs' ) ;
96
96
const packageJsonReader = require ( 'internal/modules/package_json_reader' ) ;
97
97
const { safeGetenv } = internalBinding ( 'credentials' ) ;
98
+ const {
99
+ require_private_symbol,
100
+ } = internalBinding ( 'util' ) ;
98
101
const {
99
102
cjsConditions,
100
103
hasEsmSyntax,
@@ -155,6 +158,20 @@ let requireDepth = 0;
155
158
let statCache = null ;
156
159
let isPreloading = false ;
157
160
161
+ function internalRequire ( module , id ) {
162
+ validateString ( id , 'id' ) ;
163
+ if ( id === '' ) {
164
+ throw new ERR_INVALID_ARG_VALUE ( 'id' , id ,
165
+ 'must be a non-empty string' ) ;
166
+ }
167
+ requireDepth ++ ;
168
+ try {
169
+ return Module . _load ( id , module , /* isMain */ false ) ;
170
+ } finally {
171
+ requireDepth -- ;
172
+ }
173
+ }
174
+
158
175
function stat ( filename ) {
159
176
filename = path . toNamespacedPath ( filename ) ;
160
177
if ( statCache !== null ) {
@@ -203,6 +220,15 @@ function Module(id = '', parent) {
203
220
this . filename = null ;
204
221
this . loaded = false ;
205
222
this . children = [ ] ;
223
+ let redirects ;
224
+ if ( policy ?. manifest ) {
225
+ const moduleURL = pathToFileURL ( id ) ;
226
+ redirects = policy . manifest . getDependencyMapper ( moduleURL ) ;
227
+ }
228
+ setOwnProperty ( this , 'require' , makeRequireFunction ( this , redirects ) ) ;
229
+ // Loads a module at the given file path. Returns that module's
230
+ // `exports` property.
231
+ this [ require_private_symbol ] = internalRequire ;
206
232
}
207
233
208
234
const builtinModules = [ ] ;
@@ -863,6 +889,7 @@ Module._load = function(request, parent, isMain) {
863
889
864
890
if ( isMain ) {
865
891
process . mainModule = module ;
892
+ setOwnProperty ( module . require , 'main' , process . mainModule ) ;
866
893
module . id = '.' ;
867
894
}
868
895
@@ -1053,24 +1080,6 @@ Module.prototype.load = function(filename) {
1053
1080
esmLoader . cjsCache . set ( this , exports ) ;
1054
1081
} ;
1055
1082
1056
-
1057
- // Loads a module at the given file path. Returns that module's
1058
- // `exports` property.
1059
- Module . prototype . require = function ( id ) {
1060
- validateString ( id , 'id' ) ;
1061
- if ( id === '' ) {
1062
- throw new ERR_INVALID_ARG_VALUE ( 'id' , id ,
1063
- 'must be a non-empty string' ) ;
1064
- }
1065
- requireDepth ++ ;
1066
- try {
1067
- return Module . _load ( id , this , /* isMain */ false ) ;
1068
- } finally {
1069
- requireDepth -- ;
1070
- }
1071
- } ;
1072
-
1073
-
1074
1083
// Resolved path to process.argv[1] will be lazily placed here
1075
1084
// (needed for setting breakpoint when called with --inspect-brk)
1076
1085
let resolvedArgv ;
@@ -1118,10 +1127,9 @@ function wrapSafe(filename, content, cjsModuleInstance) {
1118
1127
// Returns exception, if any.
1119
1128
Module . prototype . _compile = function ( content , filename ) {
1120
1129
let moduleURL ;
1121
- let redirects ;
1122
1130
if ( policy ?. manifest ) {
1123
1131
moduleURL = pathToFileURL ( filename ) ;
1124
- redirects = policy . manifest . getDependencyMapper ( moduleURL ) ;
1132
+ policy . manifest . getDependencyMapper ( moduleURL ) ;
1125
1133
policy . manifest . assertIntegrity ( moduleURL , content ) ;
1126
1134
}
1127
1135
@@ -1152,18 +1160,17 @@ Module.prototype._compile = function(content, filename) {
1152
1160
}
1153
1161
}
1154
1162
const dirname = path . dirname ( filename ) ;
1155
- const require = makeRequireFunction ( this , redirects ) ;
1156
1163
let result ;
1157
1164
const exports = this . exports ;
1158
1165
const thisValue = exports ;
1159
1166
const module = this ;
1160
1167
if ( requireDepth === 0 ) statCache = new SafeMap ( ) ;
1161
1168
if ( inspectorWrapper ) {
1162
1169
result = inspectorWrapper ( compiledWrapper , thisValue , exports ,
1163
- require , module , filename , dirname ) ;
1170
+ module . require , module , filename , dirname ) ;
1164
1171
} else {
1165
1172
result = ReflectApply ( compiledWrapper , thisValue ,
1166
- [ exports , require , module , filename , dirname ] ) ;
1173
+ [ exports , module . require , module , filename , dirname ] ) ;
1167
1174
}
1168
1175
hasLoadedAnyUserCJSModule = true ;
1169
1176
if ( requireDepth === 0 ) statCache = null ;
@@ -1339,7 +1346,7 @@ Module._preloadModules = function(requests) {
1339
1346
}
1340
1347
}
1341
1348
for ( let n = 0 ; n < requests . length ; n ++ )
1342
- parent . require ( requests [ n ] ) ;
1349
+ internalRequire ( parent , requests [ n ] ) ;
1343
1350
isPreloading = false ;
1344
1351
} ;
1345
1352
0 commit comments