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

40

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


你有查看文档中的使用说明页面吗? - mausworks
2
请随意查看答案并在需要时更新已接受的答案,其他人可能会感激不尽! - Leo
1
控制台 - document.body.addEventListener('click', function() { throw new Error('Sentry测试'); }); - 然后随便点击任何地方 - sunn0
5个回答

32

浏览器控制台由于受到沙盒保护,无法直接使用。一个简单的技巧是将代码附加到 HTML 元素上,像这样:

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

然后单击标题。

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


太棒了!真不错。 正是我想要的。 顺便说一下,我正在使用React集成,它运行良好。 - M. Amer
这太棒了。完美地运作了。需要记住的一件事是,您可能需要在控制台中编写所有这些代码。因此,您需要使用 document.createElementElement.setAttribute("onclick")Element.appendChild - dimiguel
这非常有帮助 - 直接从控制台抛出错误不会触发Sentry,但是通过DevTools手动添加一个元素并从那里抛出未处理的错误是完美的。如果有人遇到困难,请尝试右键单击随机的div元素并选择“编辑为HTML”,然后使用答案中的元素和onClick事件进行添加。 - bsplosion
这个应该是正确的答案,因为它正确地测试了Sentry是否报告错误。 - Mgs M Rizqi Fadhlurrahman
简单。优雅。有效。最佳答案。 - ksh

24

验证(新版)

myUndefinedFunction();

验证您的设置(旧版)

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

也许值得再次检查您的安装(或更新)和配置,以及验证您的设置


3
将这段代码复制到控制台中并不能起作用,我无法想象他们希望你将其集成到代码库中。 - Legion
它的设置是正确的。如果不是,请向Sentry提交PR。我很乐意与他们一起审核。 - Leo
3
部署后它能在控制台中运行吗?我有严重的疑虑。 - Legion
请不要将控制台日志部署到生产环境中 ☝️ - Leo
3
如果您想验证在生产环境中发送的事件而不部署测试代码,adius 在下面提供的答案可以解决问题:https://dev59.com/E1YN5IYBdhLWcg3whIXz#67884468 - smashed-potatoes
测试错误发送的好方法!但是源代码映射将无法匹配。因此,在测试这些方面并不有帮助。 - undefined

2

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

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

尝试将以下内容添加到您的代码中(取自文档):

myUndefinedFunction();

如果您的代码构建由于测试/代码检查而无法实现此操作,您可能可以使用以下方法:
window.myUndefinedFunction()

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

阅读文档以获取更多信息。


1
如果您无法或不想使用未定义的函数来测试Sentry是否发送错误报告,您还可以通过以下方式,在Chrome的DevTools中使用调试器进行测试:
  1. 在代码中添加断点(例如,对于单击事件处理程序)
  2. 触发该事件,例如单击按钮
  3. 当断点在控制台中命中时,将需要执行的函数/变量设置为undefined
  4. 按下DevTools中的播放/继续按钮,然后查看错误输出
例如:
1: function onClick() {
2:   api.sendSomeEvent();
3: }

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

注意:这适用于任何环境,尽管您可能需要在缩小的代码中找到您的事件;)


1
"

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

"

3
这个答案已经过时。Sentry 不再正式推荐 Raven。 - Titenis
嗨@Titenis,Sentry不再推荐Raven的来源是什么?https://docs.sentry.io/clients/ruby/config/看起来对我来说仍然推荐Raven - Charles Offenbacher
@CharlesOffenbacher建议使用官方的@sentry/browser包来记录JavaScript文档。这是一个JS问题,而你链接了Ruby文档。 - Titenis
啊,这样就说得通了。谢谢。 - Charles Offenbacher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接