Как импортировать другой файл JS в Web Worker? - PullRequest
0 голосов
/ 03 июля 2019

У меня есть WebWorker, в котором я хочу использовать функции из другого существующего файла JavaScript.Я пробовал разные методы для импорта файла JS, но до сих пор ни один не работал.Данный файл находится в другом каталоге с относительным путем '../pkg/benchmark.js'.

Кто-нибудь знает, как это сделать?

Я пробовал следующие методы:

Метод 1:

import * as myFile from '../pkg/benchmark.js';

, который дает ошибки:

Uncaught SyntaxError: Unexpected token *

Метод 2:

import { myFunc1, myFunc2 } from '../pkg/benchmark.js';

выдает ошибку:

Uncaught SyntaxError: Unexpected token {

Метод 3: Использование importScripts ()

importScripts('../pkg/benchmark.js');

выдает ошибку:

worker_wasm.js:6 Uncaught DOMException: Failed to execute importScripts' on 'WorkerGlobalScope': The script at http://localhost:8080/pkg/benchmark.js' failed to load. 

Метод 4: Использование динамического импорта:

import('../pkg/benchmark.js')
    .catch(e => console.error(e));

выдает ошибку:

TypeError: Failed to fetch dynamically imported module: http://localhost:8080/pkg/benchmark.js

Поскольку я использую npm, следует отметить, что в package.json я определил зависимость

"dependencies": {
    "benchmark": "file:../pkg"
  }

поэтому мне обычно не нужно указывать относительный путь, а вместо этого просто импортировать «тест» напрямую.Это тоже не работает.

Метод 5: Наконец, я попытался включить хромированный флаг

--enable-experimental-web-platform-features

и объявить моего работника как

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

, что нене выдает никаких ошибок в консоли разработчика, но также не запускает импортированные функции.

...