Webpack worker-loader - import不起作用

时间:2016-08-03 15:22:51

标签: ecmascript-6 webpack web-worker

我正在使用React / Webpack / ES6制作​​应用程序,我遇到了问题。

我正在尝试使用Web worker来进行API调用。我有一个功能性的线程池来帮助我的网络工作者,并且没有任何问题。

问题是我正在使用webpack worker-loader来创建我的worker,如果我想导入这样的外部库:

import MyLibrary from './path/to/MyLibrary';

我收到了这样的错误:

Uncaught ReferenceError: window is not defined

我无法使其发挥作用,但根据documentation,我认为我做得对。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

嗯,您没有与switch myNumber { case 1...2: myFavoriteNumbers += [myNumber] // do this for case 1 and case 2 switch myNumber { case 1: print("my number is number 1") // do this only for case 1 default: print("this is number 2") // do this only for case 2 } case 3...4: myLeastFavoriteNumbers += [myNumber] // do this for case 3 and case 4 switch myNumber { case 3: print("I don't like number 3") // do this only for case 3 default: print("Number Four") // do this only for case 4 } default: print("Default") } 共享任何可能存在问题的代码。通常,JavaScript错误对象包含有关抛出错误的行和文件的信息。

尽管如此,我会猜测显而易见的可能性:您在MyLibrary中使用window未在网络工作者中定义MyLibrary全局属性!对于必须与工作程序兼容的代码,请使用window。它也可以在普通的浏览器环境中使用 - self因此优于self

作为旁注,也不要依赖window未在worker中定义 - 某些库定义它来处理兼容性问题。我也这样做,有时候:

window

如果您不想或不想编辑库,这也是可接受的解决方法。我对make jQuery work in web workers做了更多这样的事情。

答案 1 :(得分:0)

在webpack上启用热模块更换时,我有相同的错误。

  1. 禁用热模块更换
  2. 在配置中添加output.globalObject: 'this'(更多详细信息,请参见#6642

希望这些可以帮助您。