File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -169,12 +169,11 @@ SandboxedModule.prototype._createRecursiveRequireProxy = function() {
169169 cache [ this . filename ] = this . exports ;
170170 var globals = this . globals ;
171171
172- var options ;
172+ var options = { } ;
173173 if ( ! this . _options . sourceTransformersSingleOnly && this . _options . sourceTransformers ) {
174- options = {
175- sourceTransformers : this . _options . sourceTransformers
176- } ;
174+ options . sourceTransformers = this . _options . sourceTransformers ;
177175 }
176+ options . ignoreMissing = this . _options . ignoreMissing ;
178177
179178 function createInnerSandboxedModule ( requestedFilename ) {
180179 // load nested dependency in sandboxed module
@@ -214,11 +213,17 @@ SandboxedModule.prototype._createRecursiveRequireProxy = function() {
214213 if ( request in cache ) return cache [ request ] ;
215214 return require ( request ) ;
216215 }
216+
217217 // cached modules
218- var requestedFilename = requireLike ( this . filename ) . resolve ( request ) ;
219- if ( requestedFilename in cache ) return cache [ requestedFilename ] ;
220- var sandboxedModule = createInnerSandboxedModule ( requestedFilename )
221- return sandboxedModule . exports ;
218+ try {
219+ var requestedFilename = requireLike ( this . filename ) . resolve ( request ) ;
220+ if ( requestedFilename in cache ) return cache [ requestedFilename ] ;
221+ var sandboxedModule = createInnerSandboxedModule ( requestedFilename )
222+ return sandboxedModule . exports ;
223+ } catch ( e ) {
224+ if ( this . _options . ignoreMissing && request in cache ) return cache [ request ] ;
225+ throw e ;
226+ }
222227 }
223228 return RecursiveRequireProxy . bind ( this ) ;
224229}
Original file line number Diff line number Diff line change 1212 ],
1313 "license" : " MIT" ,
1414 "version" : " 2.1.0" ,
15- "repository" : " log4js-node/node-sandboxed-module" ,
15+ "repository" : {
16+ "type" : " git" ,
17+ "url" : " https://github.com/log4js-node/node-sandboxed-module.git"
18+ },
1619 "main" : " ./lib/sandboxed_module" ,
1720 "files" : [
1821 " lib/"
Original file line number Diff line number Diff line change 1+ exports . doesNotExist = require ( 'doesNotExist' ) ;
2+ exports . alsoDoesNotExist = require ( './alsoDoesNotExist' ) ;
3+ exports . subModule = require ( './subModule' ) ;
Original file line number Diff line number Diff line change 1+ exports . requiredFromSubModule = require ( 'requiredFromSubModule' ) ;
Original file line number Diff line number Diff line change 11var assert = require ( 'assert' ) ;
22var SandboxedModule = require ( '../..' ) ;
33
4- var foo = SandboxedModule . require ( '../fixture/foo' , {
5- "requires" : { "doesNotExist" : { } } ,
4+ var foo = SandboxedModule . require ( '../fixture/loads-missing' , {
5+ "requires" : {
6+ "doesNotExist" : { fake : true } ,
7+ "./alsoDoesNotExist" : { cheese : 'gouda' } ,
8+ "requiredFromSubModule" : { didItWork : 'yes' }
9+ } ,
610 "ignoreMissing" : true
711} ) ;
8- assert . strictEqual ( foo . foo , 'foo' ) ;
9- assert . strictEqual ( foo . bar , 'bar' ) ;
12+ assert . ok ( foo . doesNotExist . fake ) ;
13+ assert . strictEqual ( foo . alsoDoesNotExist . cheese , 'gouda' ) ;
14+ assert . strictEqual ( foo . subModule . requiredFromSubModule . didItWork , 'yes' ) ;
You can’t perform that action at this time.
0 commit comments