如何使用 Sentry 捕获*所有*错误和异常?

How to catch *all* errors and exceptions with Sentry?

提问人:John Goofy 提问时间:11/14/2019 更新时间:11/14/2019 访问量:2395

问:

在 Chrome 页面中出现的 24 个错误中,Sentry 只记录了一个错误。console

我已经按照文档进行了操作,并确保在jQuery之后,但在我们的CMS供应商代码和自定义捆绑包之前,在页面中加载并初始化了Sentry:<head>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://browser.sentry-cdn.com/5.8.0/bundle.min.js" crossorigin="anonymous"</script>
<script>
  Sentry.init({
    dsn: "https://...@.../..."
  });
</script>
<script src="..."></script>

我还按照此处所述修补了 Sentry 以进行复制,因此我现在在 Sentry 中看到条消息。console.error()Sentry.captureMessage()

但我仍在为三种类型的错误而苦苦挣扎:

  • Uncaught TypeError
  • 来自 CMS 的 JS 文件中的错误
  • 一些非常特殊的错误<img>srcset

console output

关于错误:我已经为图像添加了处理程序。它们在某些情况下被调用,但在这种特殊情况下不会被调用(属性在文件名中有一个空格,这违反了语法);诚然,这个问题应该报告给 Chrome 开发团队,而不是在 Sentry 中修复。srcsetonerrorsrcset

我试图自己捕获这些错误并手动将它们重定向到 Sentry,但以下听众都没有在 Chrome 中捕获它们(对不起,只是测试代码,我没有美化它):.join()

window.onerror = function (errorMsg, url, lineNumber) {
  alert(["window.onerror", errorMsg, url, lineNumber].join());
  return true;
};

window.addEventListener("unhandledrejection", function (e) {
  alert(["window: Unhandled Rejection", e.reason.message].join());
});

window.addEventListener("rejectionhandled", function (e) {
  alert(["window: rejectionhandled", e.reason.message].join());
});

window.addEventListener("error", function (e) {
  alert(["window: Error", e.reason.message].join());
});

$.error = function (message) {
  alert(["jQuery error", message].join());
};

那么:我是否遗漏了任何东西(一些 Sentry 配置设置、我应该捕获的其他浏览器事件等)?

JavaScript 错误处理 控制台 Sentry

评论

1赞 JasonMHirst 6/30/2021
嗨,你有没有解决这个问题?我遇到了同样的问题。

答: 暂无答案