Sentry-javascript: 在 globalEventProcessors 中抛出的错误被默默忽略

创建于 2019-08-22  ·  3评论  ·  资料来源: getsentry/sentry-javascript

  • [x] 查看文档: https :
  • [x] 搜索现有问题: https :
  • [x] 使用最新版本: https :
  • [ ] 从您的 Sentry 帐户提供指向受影响事件的链接

套餐+版本

@sentry/[email protected]

描述

在全局事件处理器中抛出的错误由 Sentry 库拾取,启动另一个错误捕获,它反过来调用将再次抛出错误的相同全局事件处理器。 这会重复未知次数(直到堆栈溢出?)。 问题是没有原始错误的痕迹,也没有错误的全局事件处理器抛出的任何后续错误。 Sentry 显然无法向上游发送错误,但也没有记录任何内容。

发现有故障的全局事件处理器阻止我们报告任何错误需要一些时间,因此如果 SDK 能够自动检测并记录这些错误,那就太好了。 在此之前,我建议将处理代码包装在 try/catch 块中并手动记录错误:

Sentry.addGlobalEventProcessor(event => {
  try {
    event.missingProperty.assignment = true
  } catch (err) {
    console.error('sentry global event processor threw error', err)
  }
  return event
})

Confirmed Bug

所有3条评论

我无法像描述的那样循环它,但是我可以确认错误被吞下(它不应该,因为我们的承诺链中有一个很大的catch子句🤔)。 我会尽快调查。 谢谢你的报告。

@kamilogorek你有没有开始研究这个问题?

@mogelbrod目前,当您设置debug: true并且出现故障时,您将获得调试日志。
刚刚在这里实现了更好的解决方案https://github.com/getsentry/sentry-javascript/pull/2416

此页面是否有帮助?
0 / 5 - 0 等级