@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
})
我无法像描述的那样循环它,但是我可以确认错误被吞下(它不应该,因为我们的承诺链中有一个很大的catch
子句🤔)。 我会尽快调查。 谢谢你的报告。
@kamilogorek你有没有开始研究这个问题?
@mogelbrod目前,当您设置debug: true
并且出现故障时,您将获得调试日志。
刚刚在这里实现了更好的解决方案https://github.com/getsentry/sentry-javascript/pull/2416