Yom*_*sk8 5 web-worker ecmascript-6 webpack
我正在使用 React/Webpack/ES6 制作应用程序,但遇到了问题。
我正在尝试使用网络工作者进行 API 调用。我有一个功能线程池来启动我的网络工作者,并且没有问题。
问题是我正在使用 webpack worker-loader 来创建我的工作人员,如果我想导入这样的外部库:
import MyLibrary from './path/to/MyLibrary';
Run Code Online (Sandbox Code Playgroud)
我收到这样的错误:
Uncaught ReferenceError: window is not defined
Run Code Online (Sandbox Code Playgroud)
我无法让它工作,但根据文档,我认为我做得对。任何的想法?
好吧,您没有分享任何可能有问题的代码MyLibrary。通常,JavaScript 错误对象包含有关引发错误的行和文件的信息。
尽管如此,我还是会猜测明显的可能性:您正在使用windowin MyLibrary。全局window属性没有在网络工作者中定义!对于必须与工作程序兼容的代码,请使用self. 它也可以在正常的浏览器上下文中工作 -self因此比window.
作为旁注,也不要依赖于window未在worker中定义 - 一些库定义它来处理兼容性问题。我有时也会这样做:
if(typeof window != "object")
self.window = self;
Run Code Online (Sandbox Code Playgroud)
如果您不能或不想编辑库,这也是可以接受的解决方法。我正是这样做了,并且做了更多的事情来让 jQuery 在 Web Workers 中工作。
| 归档时间: |
|
| 查看次数: |
2878 次 |
| 最近记录: |