运行webpack后'global'未定义

时间:2016-01-18 13:31:42

标签: webpack

我有一个非常简单的包装器模块,它围绕运行脚本的环境设置的全局对象。包装器模块只是:

module.exports = global.foobar;

以前当我使用browserify时,这很好用。在浏览器中,globalwindow相同。

但是,我正在切换到webpack,在运行webpack之后global的含义发生了变化。在浏览器中,它不再是window的别名,而是undefined,我得到cannot read property foobar of undefined

现在,在我的包装器模块的情况下,我可以通过其他方式修复它,但我有其他依赖项,并且在链的下方使用buffer包。该软件包还使用globalsee here),并在运行webpack后崩溃:

Uncaught TypeError: Cannot read property 'TYPED_ARRAY_SUPPORT' of undefined

我是否可以采用与global的别名global相同的方式对webpack执行window进行处理?

3 个答案:

答案 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: {}
})],