捕获所有 JavaScript 错误并将其发送到服务器 [已关闭]

2022-08-30 00:36:49

我想知道是否有人有全局处理JavaScript错误并将其从客户端浏览器发送到服务器的经验。

我认为我的观点非常清楚,我想知道客户端发生的每个异常,错误,编译错误等,并将它们发送到服务器进行报告。

我主要使用MooTools和(用于JS端)和Django用于服务器端。head.js


答案 1

我会看看窗外.onerror

例:

window.onerror = function(message, url, lineNumber) {  
  //save error and send to server for example.
  return true;
};  

请记住,返回 true 将阻止触发默认处理程序,而返回 false 将允许默认处理程序运行。


答案 2

如果您的网站正在使用Google Analytics(分析),您可以执行我所做的操作:

window.onerror = function(message, source, lineno, colno, error) {
  if (error) message = error.stack;
  ga('send', 'event', 'window.onerror', message, navigator.userAgent);
}

对上述代码的一些评论:

  • 对于现代浏览器,将记录完整的堆栈跟踪。
  • 对于不捕获堆栈跟踪的旧版浏览器,将改为记录错误消息。(根据我的经验,主要是早期的iOS版本)。
  • 还会记录用户的浏览器版本,因此您可以看到哪些操作系统/浏览器版本抛出了哪些错误。这简化了错误优先级和测试。
  • 如果您将Google Analytics与“analytics.js”一起使用,则此代码有效,如下所示。如果您使用“gtag.js”,就像这样,您需要调整函数的最后一行。有关详细信息,请参阅此处

代码准备就绪后,您可以查看用户的 Javascript 错误:

  1. 在 Google Analytics(分析)中,点击相应部分,然后点击报告。BehaviorTop Events
  2. 您将获得事件类别列表。在列表中单击。window.onerror
  3. 您将看到 Javascript 堆栈跟踪和错误消息的列表。通过单击按钮并在显示的文本框中输入,将列添加到用户的操作系统/浏览器版本的报表中。Secondary dimensionEvent Label
  4. 该报告将类似于下面的屏幕截图。
  5. 为了将操作系统/浏览器字符串转换为更易于阅读的描述,我将它们复制粘贴到 https://developers.whatismybrowser.com/useragents/parse/

enter image description here