当我创建一个有问题的 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
这只发生在错误的 ES 模块导入,并且是由 https://bugzilla.mozilla.org/show_bug.cgi?id=1872483 和 https://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