我试图在错误事件侦听器上获取原始错误。但是,当从不同的脚本连接监听器时,我得到通用的"脚本错误"没有堆栈跟踪。我的理解是这种情况发生在跨源脚本中。但是,我的所有脚本都存在于Webpack创建的应用程序包中。
示例
app.js
window.addEventListener("error", function (errEvt) {
console.log(errEvt, window.myErr);
});
some-file.js
function generateError() {
let foo = {};
try {
foo.bar();
} catch (err) {
window.myErr = err;
throw new Error(err);
}
}
这两者都捆绑在app.bundle.js
。
<script src="app/app.bundle.js"></script>
如果我将错误生成器附加到文档单击事件,那么我得到以下内容。
(app.js context) window.myErr --> TypeError: foo.bar is not a function
at errors (eval at <anonymous> (app.bundle.js:45), <anonymous>:37:13)
(app.js context) errEvt --> ErrorEvent {message: "Script error.", filename: "", lineno: 0, colno: 0…}
发生了什么?那么这些脚本不应该被认为是同一个来源(它们都是&#34;生活&#34;在app.bundle.js
?有没有办法获得原始错误而不需要手动将它绑定到窗口对象中一个try / catch
?
参考