2017-05-22 58 views
10

我正在使用ES2015导入/导出模块。Web Workers - 如何导入模块

在我的工人文件,当我尝试导入功能,如我通常做:

worker.js

import { a, b, c } from "./abc.js"; 

我得到的错误: SyntaxError: import declarations may only appear at top level of a module

正如我在我的模块'abc.js'中导出函数,我不知道如何使用旧的(&显然在它的出路)语法:

self.importScripts("/app/abc.js"); 

所以,我的问题是,我们如何在工作人员中使用新的导入模块语法?

第二个问题是,importScripts从模块中导入时会导入什么内容,其中没有导出全局对象父项?

回答

7

工作人员的es2015模块尚未在任何浏览器中受支持。
一旦他们这样做,你必须创建这样的工人:

new Worker("worker.js", { type: "module" }); 

见: https://html.spec.whatwg.org/#module-worker-example

现在你必须使用importScripts()

这些是每个浏览器的bug报告:
Firefox:https://bugzilla.mozilla.org/show_bug.cgi?id=1247687
铬:https://bugs.chromium.org/p/chromium/issues/detail?id=680046
的Webkit:https://bugs.webkit.org/show_bug.cgi?id=164860
边缘:https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/20469133-implement-worker-modules

+0

如何知道什么时候会得到支持? – Yairopro

+1

看我更新的答案。 Chromium正在积极开发它。 –