У меня есть 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" });
, что нене выдает никаких ошибок в консоли разработчика, но также не запускает импортированные функции.