我有一个非常简单的包装器模块,它围绕运行脚本的环境设置的全局对象。包装器模块只是:
module.exports = global.foobar;
以前当我使用browserify时,这很好用。在浏览器中,global
与window
相同。
但是,我正在切换到webpack,在运行webpack之后global
的含义发生了变化。在浏览器中,它不再是window
的别名,而是undefined
,我得到cannot read property foobar of undefined
。
现在,在我的包装器模块的情况下,我可以通过其他方式修复它,但我有其他依赖项,并且在链的下方使用buffer
包。该软件包还使用global
(see here),并在运行webpack后崩溃:
Uncaught TypeError: Cannot read property 'TYPED_ARRAY_SUPPORT' of undefined
我是否可以采用与global
的别名global
相同的方式对webpack执行window
进行处理?
答案 0 :(得分:6)
我终于找到了问题。我有两个webpack构建:第一个构建我的库,第二个构建演示。问题是两个配置都有:
{
node: {
global: true
}
}
如果第一个(构建lib的那个)有global: false
,第二个有global: true
,它可以正常工作。
答案 1 :(得分:1)
在web.config.js文件中添加以下插件
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
{
'apply': function(compiler) {
compiler.parser.plugin('expression global', function() {
this.state.module.addVariable('global', "(function() { return this; }()) || Function('return this')()");
return true;
});
}
}
]
答案 2 :(得分:0)
定义webpackConfig
并添加
plugins: [new webpack.DefinePlugin({
global: {}
})],