我有一个 WebWorker,我想在其中使用另一个现有 JavaScript 文件中的函数。我尝试了不同的方法来导入 JS 文件,但到目前为止都没有奏效。有问题的文件位于另一个目录中,相关路径为“../pkg/benchmark.js”。
有谁知道如何做到这一点?
我尝试了以下方法:
方法一:
import * as myFile from '../pkg/benchmark.js';
这给出了错误:
Uncaught SyntaxError: Unexpected token *
方法二:
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: 最后,我尝试启用 chrome 标志
--enable-experimental-web-platform-features
并宣布我的工人为
new Worker("worker.js", { type: "module" });
它不会在开发人员控制台中出现任何错误,但也不会运行导入的函数。