Web Worker 初始化崩溃且没有错误

问题描述 投票:0回答:1

当我创建一个有问题的 Web Worker 时,它会立即终止。 但是,浏览器控制台没有显示任何错误消息,这很奇怪。

这似乎在 Firefox 和 Chrome 中都可以重现。

let code = `
import { crash } from "./nowhere.js"; 
console.log("hi"); // Never gets executed
`;

let alternateCode = `
console.log("hi");
throw new Error("normal errors do show up in the browser console");
`;

let blob = new Blob([code]);

let blobURL = window.URL.createObjectURL(blob);
let worker = new Worker(blobURL);
worker.onmessage = (data) => {
    console.log(data);
};
worker.postMessage("start");

// And check out the browser console

javascript web-worker
1个回答
0
投票

这只发生在错误的 ES 模块导入,并且是由 https://bugzilla.mozilla.org/show_bug.cgi?id=1872483https://bugs.chromium.org/p/chromium 引起的/问题/详细信息?id=1215587 .

可以使用简单的

onerror
侦听器捕获错误。但是,请注意,错误消息在任何浏览器中都不包含有用的信息。

let code = `
import { crash } from "./nowhere.js"; 
console.log("hi"); // Never gets executed
`;

let alternateCode = `
console.log("hi");
throw new Error("normal errors do show up in the browser console");
`;

let blob = new Blob([code]);

let blobURL = window.URL.createObjectURL(blob);
let worker = new Worker(blobURL);
worker.onerror = (data) => {
    console.error(data);
};
worker.onmessage = (data) => {
    console.log(data);
};
worker.postMessage("start");

// And check out the browser console

© www.soinside.com 2019 - 2024. All rights reserved.