@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