Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在浏览器中的Javascript代码中,以下内容不总是正确的:此===窗口?_Javascript_Browser_Webpack - Fatal编程技术网

在浏览器中的Javascript代码中,以下内容不总是正确的:此===窗口?

在浏览器中的Javascript代码中,以下内容不总是正确的:此===窗口?,javascript,browser,webpack,Javascript,Browser,Webpack,我有一个旧的JS应用程序,我需要为它实现一些新功能。 一些旧模块已经实现,如: (function() { ... this.MyModule = MyModule; }).call(this); 这很有效。 现在我必须实现额外的模块,我想使用react来实现。我已更新了我的网页包配置,并在babel loader的预设中添加了“es2015”: { test: /(\.js|\.jsx)$/, exclude: /(node_modules)/, loader: 'ba

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

(function() {
  ...

  this.MyModule = MyModule;
}).call(this);
这很有效。 现在我必须实现额外的模块,我想使用react来实现。我已更新了我的网页包配置,并在babel loader的预设中添加了“es2015”:

{
  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”预设,一切似乎都很好

有人能给我一个提示吗

谢谢,
Gerald

我最终通过使用不同的网页加载程序定义解决了这个问题:我的旧文件加载程序不需要“es2015”预设,而我的新文件加载程序使用“es2015”预设。

我最终通过使用不同的网页加载程序定义解决了这个问题:我的旧文件加载程序,我不需要“es2015”预设和另一个加载程序来加载我的新文件,而我使用的是“es2015”预设。

是的,通过模块加载程序的工作方式和“严格使用”,它可以。如果您使用模块加载器,请使用它的机制导出内容,而不是将内容附加到
窗口
。除此之外,现在应该有一个变量
global
。或者您更改
})。调用(this)
}()
@Thomas Ok,谢谢您的提示。是的,它可以,通过模块加载器的工作方式和“使用strict”。如果您使用模块加载器,请使用它的机制导出内容,而不是将内容附加到
窗口
。除此之外,现在应该有一个变量
global
。或者您更改了
})。请将(this)
呼叫
}()
@Thomas Ok,谢谢您的提示。