如何测试 Sentry 是否报告错误?

How do I test that Sentry is reporting errors?

我刚刚使用他们提供的标准代码片段为客户端 JavaScript 应用程序安装了 Sentry。我如何测试它是否正常工作?我已尝试从我的浏览器控制台手动 throw 处理错误,但它没有出现在 Sentry 中。是否有关于执行此操作的正确方法的文档?

Raven.captureMessage('Broken!') 是一个很好的起点(也来自 Sentry 文档)。如果发送失败,Raven 客户端未启动。

验证(较新)

myUndefinedFunction();

验证您的设置(较旧)

Sentry.captureException(new Error("This is my fake error message"));

https://docs.sentry.io/platforms/javascript/?platform=browser#verifying-your-setup

可能也值得仔细检查一下您的 setup (or updating) and config

在 Sentry 中产生错误的一种方法是调用未定义的函数。

注意:这不能在控制台中完成 - 它必须在代码中。

尝试将此添加到您的代码中(取自 docs):

myUndefinedFunction();

如果您的代码构建由于 tests/linting 而不允许这样做,您可以使用:

window.myUndefinedFunction()

然后您应该会在浏览器控制台和 Sentry 仪表板中看到错误。

阅读 Docs 了解更多信息。

无法使用浏览器控制台,因为它是沙盒。一个简单的技巧是将代码附加到 HTML 元素,如下所示:

<h1 onClick="throw new Error('Test')">
  My Website
</h1>

然后点击标题。

这可以在浏览器检查器中完成,因此您的源代码不必修改。

如果您不能或不想使用未定义的函数来测试 Sentry 是否发送错误,您也可以通过以下方式使用 Chrome 的 DevTools 中的调试器:

  1. 在您的代码中添加断点,例如对于点击事件处理程序
  2. 触发该事件,例如单击一个按钮
  3. 在控制台下断点时,设置一个执行需要的function/variable为undefined
  4. 在 DevTools 中按 play/continue 以查看错误输出

例如

1: function onClick() {
2:   api.sendSomeEvent();
3: }

onClick事件处理程序的正文中添加断点(第2行),触发事件。暂停执行时:在您的控制台中输入类似 api = undefined 的内容,然后按回车键更新状态。然后继续执行(单击播放按钮),您应该会看到一个错误 (ala api is undefined),然后 Sentry 会为您发送该错误。

注意:这适用于任何环境,但您可能需要聪明地在缩小代码中查找您的事件;)