Webpack worker-loader - import不起作用。

5

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

我试图使用Web Workers来进行API调用。我有一个功能性的线程池来启动我的Web Workers,这方面没有问题。

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

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

我收到了这样的错误信息:
Uncaught ReferenceError: window is not defined

我无法使其正常工作,但根据文档,我认为我做得没问题。有什么想法吗?

2个回答

2
好的,您没有分享任何可能与“ MyLibrary”有问题的代码。通常,JavaScript错误对象包含有关引发错误的行和文件的信息。
尽管如此,我会猜测一个明显的可能性:您正在使用“ MyLibrary”中的“ window”。在Web Worker中未定义全局属性“ window”!对于必须与Worker兼容的代码,请使用“ self”。它也将在正常的浏览器上下文中工作-因此,“ self”比“ window”更可取。
另外,也不要依赖于在Worker中未定义“ window”-一些库定义它以处理兼容性问题。我有时也这样做:
if(typeof window != "object")
    self.window = self;

如果您不能或不想编辑库,则此方法也可以接受。我正是这样做的,并且还做了更多工作,以使jQuery在Web Worker中工作

1
谢谢您的回复。我明白我的问题是在Web Workers中未定义窗口(window)。问题是当我导入例如“request”模块时出现此错误。那么,我该如何解决这个问题呢? - Yomansk8

1

当我在webpack上启用热模块替换时,出现相同的错误。

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

希望这些对你有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接