@@ -19,6 +19,8 @@ interface PrivateNodeModule extends NodeModule {
19
19
_compile ( code : string , filename : string ) : void
20
20
}
21
21
22
+ const requiresCache = new WeakMap < NodeModule , NodeRequire > ( )
23
+
22
24
export class CommonjsExecutor {
23
25
private context : vm . Context
24
26
private requireCache = new Map < string , NodeModule > ( )
@@ -46,7 +48,6 @@ export class CommonjsExecutor {
46
48
this . Module = class Module {
47
49
exports : any
48
50
isPreloading = false
49
- require : NodeRequire
50
51
id : string
51
52
filename : string
52
53
loaded : boolean
@@ -55,9 +56,8 @@ export class CommonjsExecutor {
55
56
path : string
56
57
paths : string [ ] = [ ]
57
58
58
- constructor ( id : string , parent ?: Module ) {
59
+ constructor ( id = '' , parent ?: Module ) {
59
60
this . exports = primitives . Object . create ( Object . prototype )
60
- this . require = Module . createRequire ( id )
61
61
// in our case the path should always be resolved already
62
62
this . path = dirname ( id )
63
63
this . id = id
@@ -66,6 +66,16 @@ export class CommonjsExecutor {
66
66
this . parent = parent
67
67
}
68
68
69
+ get require ( ) {
70
+ const require = requiresCache . get ( this )
71
+ if ( require )
72
+ return require
73
+
74
+ const _require = Module . createRequire ( this . id )
75
+ requiresCache . set ( this , _require )
76
+ return _require
77
+ }
78
+
69
79
_compile ( code : string , filename : string ) {
70
80
const cjsModule = Module . wrap ( code )
71
81
const script = new vm . Script ( cjsModule , {
0 commit comments