@sentry/[email protected]
يتم التقاط الأخطاء التي تم إلقاؤها في معالجات الأحداث العالمية بواسطة Sentry lib ، مما يؤدي إلى بدء التقاط خطأ آخر والذي بدوره يستدعي نفس معالج الحدث العالمي الذي سيؤدي إلى حدوث خطأ مرة أخرى. يتكرر هذا لعدد غير معروف من المرات (حتى يفيض المكدس ربما؟). تكمن المشكلة في عدم وجود أي أثر للخطأ الأصلي ، ولا أي أخطاء لاحقة ناتجة عن معالج الأحداث العالمية الخاطئ. من الواضح أن 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