首页 > 解决方案 > 如何将 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));
    }
}

我虽然这可能是一个加载顺序问题,但该函数位于一个单独的脚本文件中,该文件在分配不正确的文件之前加载。

标签: javascripthtmldomtry-catch

解决方案


你试过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 服务器上运行此代码会在警报中显示完整的错误消息。让我知道这是否适合您。


推荐阅读