无法在'DedicatedWorkerGlobalScope'上执行'postMessage':提供的值无法转换为序列

bre*_*ine 6 web-worker

我收到以下错误

未捕获的TypeError:无法在'DedicatedWorkerGlobalScope'上执行'postMessage':提供的值无法转换为序列.

在网络工作者的这一行:

postMessage("hi", "http://localhost:8000");
Run Code Online (Sandbox Code Playgroud)

(事实上​​,这就是整个网络工作者).

基本文件包含:

var myWorker = new Worker("test.js");
myWorker.onmessage = function (e) {
    console.log('Message received from worker');
};
Run Code Online (Sandbox Code Playgroud)

我不确定它抱怨哪个值,我不确定将它转换为"序列"意味着什么.

小智 8

发布消息的目的地是隐式的(从工作人员内部调用时,正在调用函数的工作人员对象,或创建工作人员的脚本。所以你应该只使用:

postMessage("hi");
Run Code Online (Sandbox Code Playgroud)

请参阅:MDN 上的 postMessage

如果它对像我这样因无关原因遇到此问题的其他人有用,我正在做:

postMessage("type", value)
Run Code Online (Sandbox Code Playgroud)

当我打算这样做时:

postMessage(["type", value])
Run Code Online (Sandbox Code Playgroud)