2017-05-22 57 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正在積極開發它。 –