2016-08-03 175 views
2

我正在使用React/Webpack/ES6创建应用程序,并且遇到问题。Webpack worker-loader - 导入不起作用

我正在尝试使用网络工作人员进行API调用。我有一个功能强大的线程池来激励我的网络工作者,并且没有任何问题。

的问题是,我使用的WebPack工人装载机创建我的工人,如果我想导入外部库是这样的:

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

我得到了这样的错误:

Uncaught ReferenceError: window is not defined 

我不能让它工作,但根据documentation,我认为我做对了。任何想法?

回答

1

那么,你没有分享任何可能有问题的代码MyLibrary。通常,JavaScript错误对象包含有关错误被引发的行和文件的信息。不过,我会猜测这个明显的可能性:您在MyLibrary中使用windowwindow全局属性未在网络工作者中定义!对于必须与工作人员兼容的代码,请使用self。它也将在正常的浏览器环境下工作 - 因此self优于window

作为一个方面说明,也不要依赖window工作人员没有定义 - 一些库定义它来处理兼容性问题。我也这样做,有时:

if(typeof window != "object") 
    self.window = self; 

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

+1

谢谢你的回应。我明白我的问题在于网络工作者没有定义窗口。问题是,当我导入例如“请求”模块时出现此错误。那么,我该如何摆脱这个问题呢? – Yomansk8