Description
I'm logging the issue here, but the error is due to changes in browserify 8.0.0.
This might be best explained with an example:
- Module
A
depends on moduleB
- Other modules depend on module
B'
, which is identical toB
but a separate copy exists for whatever reason B
is deduped by browserify and points toB'
B
gets routed to theA
bundle, assigned ID of200
B'
gets routed to the common bundle, assigned ID of100
- Page includes common bundle then
A
bundle
A
bundle in browserify v7:
200:[function(require,module,exports){
module.exports=require(100)
},{"dup":100}]}
A
bundle in browserify v8:
200:[function(require,module,exports){
arguments[4][100][0].apply(exports,arguments)
},{"dup":100}]}
This results in an exception Uncaught TypeError: Cannot read property '0' of undefined
because ID 100
is not defined in the current bundle.
This worked in v7 because it used require
, which tries to resolve the module with previously defined require
s from other bundles.
I realize this is an edge case and that if npm
is correctly deduping dependencies, this situation should not occur. And the v8 behaviour is more correct in theory because B
may have different dependencies from B'
. However, assuming that any module is defined in the current bundle is dangerous when factor-bundle is involved.
Activity