根据browserify-shim文档,您可以使用以下语法指定 browserify-shim 需要从遗留模块中公开哪些全局变量package.json
:
{
"browserify-shim": {
"legacyModule": "myVar"
}
}
我希望可以通过require('legacyModule')
和访问旧模块window.myVar
。
根据我的经验,如果我尝试填充的非 commonjs 模块使用window.myVar = x
or just myVar = x
,则该模块将在全球范围内公开,并且可以require()
按预期通过。
但是,当使用遗留模块时var myVar = x
,这就是导致问题的原因,因为该模块只能通过 viarequire('legacyModule')
而不是 via访问window.myVar
。
browserify -shim 文档指出:
此外,它还处理以下现实世界的边缘情况:
- 仅在脚本级别声明 a
var foo = ...
并假设它附加到window
对象的模块。因为它们运行的唯一方式是在全球范围内——“咳咳,……不?!”