在浏览器中的Javascript代码中并不总是如此:这= = window?

时间:2016-08-26 13:16:50

标签: javascript browser webpack

我有一个旧的JS应用程序,我需要实现一些新功能。 一些旧模块已实现如下:

(function() {
  ...

  this.MyModule = MyModule;
}).call(this);

这很好用。 现在我必须实现其他模块,我想使用react做到这一点。我更新了我的webpack配置,并将'es2015'添加到babel加载器的预设中:

{
  test: /(\.js|\.jsx)$/,
  exclude: /(node_modules)/,
  loader: 'babel',
  query: {
    presets: ['react', 'es2015']
  }
}

现在我的原始模块不再加载了。 现在,当我在浏览器中运行代码时出现以下错误:

MyModule.js:185 Uncaught TypeError: Cannot set property 'MyModule' of undefined

这段代码:

this.MyModule = MyModule;

这看起来好像在Javscript中,这不再是窗口了吗? 这可能是真的吗?

如果删除“es2015”预设,一切似乎都很好。

有人可以给我一个提示吗?

谢谢, 杰拉德

1 个答案:

答案 0 :(得分:0)

我最后通过使用不同的webpack加载器定义来解决这个问题:我的旧文件的加载器,我不需要'es2015'预设,而我的新文件的另一个加载器我使用'es2015'预设。