javascript - 如何将 Chrome 控制台中的 Send TypeErros 发送到警报
问题描述
考虑一个脚本文件
let something = undefined;
let undefined = something.test;
这将在 Chrome 控制台中抛出:
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'test')
如何将该错误发送给用户的警报,而不是访问控制台?
以下两种方法已尝试但均未成功 - 还将分配包装到 try catch throw 中。
window.onerror = function (errorMsg, url, lineNumber, column, errorObj) {
alert(
`Error: ` +
errorMsg +
` Script: ` +
url +
` Line: ` +
lineNumber +
` Column: ` +
column +
` StackTrace: ` +
errorObj
);
};
window.addEventListener("error", handleError, true);
function handleError(evt) {
if (evt.message) { // Chrome sometimes provides this
alert("error: "+evt.message +" at linenumber: "+evt.lineno+" of file: "+evt.filename);
} else {
alert("error: "+evt.type+" from element: "+(evt.srcElement || evt.target));
}
}
我虽然这可能是一个加载顺序问题,但该函数位于一个单独的脚本文件中,该文件在分配不正确的文件之前加载。
解决方案
你试过try catch?这对我有用。
try {
let c = undefined.test;
} catch(error) {
alert(error);
}
好的,我可以通过在 localhost 服务器上运行 window.onerror 来使其正常工作
在一个 javascript 文件中,我定义了以下内容。
window.onerror = function (errorMsg) {
alert(errorMsg);
};
在另一个我导致错误:
let c = undefined.test;
我相信原因是 CORS 问题,请参阅:
当脚本发生错误时,从不同的来源加载,不报告错误的详细信息,以防止信息泄露
在本地 python http 服务器上运行此代码会在警报中显示完整的错误消息。让我知道这是否适合您。
推荐阅读
- angular - Angular 6如何获取两个位置AGM之间的距离
- c# - 打开本地pdf文件时,Wpf WebView显示空白窗口
- javascript - 类型“T”上不存在属性 - 一般问题
- javascript - 使用 JSON 文件作为 Javascript Web 应用程序的数据库
- import - 当名称从 HelloWorld 更改时,vuejs2 不导入
- java - 使用列表锁定实现生产者消费者问题
- java - setAttribute 在 HtmlUnit 中没有按预期工作
- angular - 无法读取未定义的属性“toLowerCase”:Http
- python - 使用 matplotlib 绘制 Duffing 振荡器的吸引力盆地
- sql-server - 全球应用搜索设计关注点