我正在从事一个严重依赖网络工作者的项目.但我无法让它们按要求运行.这只是一个缩小的示例,但格式或多或少相似.

我有4个文件:

指数html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Hello World!</title>
  </head>
  <body>
      <button id="btn">GO</button>
      <script src="./指数js公司" type="module"></script>
  </body>
</html>

指数js公司

const worker = new Worker("./工人js公司", {type: "module"})

worker.addEventListener("message", async ({ data }) => {
    console.log(data);
});

worker.onerror = function (event) {
    throw new Error(event.message + " (" + event.filename + ":" + event.lineno + ")");
}

window.sendMessage = function (args) {
    worker.postMessage(args);
};

async function onclick() {
    sendMessage("World")
}

document.getElementById("btn").addEventListener("click", onclick, false);

工人js公司

import * as p from "你好js公司"

console.log("Worker Started")

onmessage = function (e) {
    p.greet(e.data)
}

你好js公司

export function greet(who){
    alert("Hello " + who)
}

工人应输出"工人已启动".

单击按钮时,UI线程将向worker发送一条消息,worker随后将调用greet函数.

但是,worker立即出错并通过worker.onerror返回值

它返回的 chromium (和 chromium 基)值未定义

Uncaught Error: undefined (undefined:undefined)
    at Worker.worker.onerror (指数js公司:8:11)

我已经在两台有3种不同操作系统的计算机上测试了不同浏览器,但没有成功.

据我所知.Firefox不支持我这样做.

Uncaught Error: SyntaxError: import declarations may only appear at top level of a module (http://localhost:8000/工人js公司:1)

我在这里看了一下这个答案

使用运行chrome

示例通过以下方式与本地服务器一起运行

 python -m http.server

这是一个包含文件的存储库

推荐答案

Such an error on a Worker without a .message, .filename, or .lineno points toward a network error, if it was a script error you'd get these filled.
Maybe your worker URL is also invalid, but at least your module one is.
If you don't use module maps, you must append ./ on relative import URL.

修复后,您将面临一个新错误,这次是脚本错误:

Javascript相关问答推荐

单击更新页面的按钮后,页面刷新;测试/断言超时,有两个标题,但没有一个标题

从mat—country—select获取整个Country数组

在vercel throws上部署带有gunjs的sveltekit应用无法找到模块./' lib/文本编码'

Rehype将hashtag呈现为URL

Google maps API通过API返回ZERO_RESULTS,以获得方向请求,但适用于Google maps

在服务器上放置了Create Reaction App Build之后的空白页面

在Three JS中看不到补间不透明度更改效果

如何将react—flanet map添加到remixjs应用程序

为什么我的导航条打开状态没有在窗口addeventlistener(Reaction Js)中更新?

从包含数百行的表中获取更改后的值(以表单形式发送到后端)的正确方法是什么?

在forEach循环中获取目标而不是父对象的属性

使用js构造一个html<;ath&>元素并不能使其正确呈现

按下单键和多值

我正在试着做一个TicTacToe Ai来和我玩.但是,我试着在第一个方块被点击时出现一个X,然后在第二个方块之后出现一个O

如何更改Html元素S的 colored颜色 ,然后将其褪色为原始 colored颜色

递增/递减按钮React.js/Redux

将字体样式应用于material -UI条形图图例

如何使用fltter_js将对象作为参数传递给javascrip?

将promise列表拆分到组.按组并行和顺序执行所有promise

如何使用Reaction/Redux创建购物车逻辑?