مقدمة
يلتقط Lerix الأخطاء من تطبيق React الخاص بك لتتمكّن من تصحيح المشاكل بشكل أسرع. بعد إتمام تثبيت React، استخدمuseLerix().throwError() لإرسال أخطاء مخصّصة إلى لوحة التحكم — أما
الأخطاء غير الملتقطة فتُلتقط تلقائياً، دون الحاجة لأي كود إضافي.
تأكّد من أن تطبيقك مغلّف بـ
LerixProvider قبل الإبلاغ عن الأخطاء.الإبلاغ عن خطأ
المعاملات (Parameters)
قيم BugType
قيم BugSeverity
الالتقاط التلقائي للأخطاء
يُثبّتLerixProvider التقاط الأخطاء بطريقتين، بحيث لا حاجة لتغليف أي شيء
في try/catch للحصول على تغطية أساسية:
- يلتقط
LerixErrorBoundaryالأخطاء التي تحدث أثناء العرض (rendering) — عقد حدود الأخطاء (error boundary) في React يغطّي فقط مرحلة العرض، وليس معالجات الأحداث أو الكود غير المتزامن. - تلتقط مستمعا
window.onerrorوَunhandledrejectionالعامّان كل شيء آخر — معالجات الأحداث، المؤقّتات، ورفض الوعود (promise rejections).
fallback عنصراً عادياً، أو دالة تستقبل الخطأ الملتقَط:
fallback={(error) => <p>{String(error)}</p>}.
لتعطيل المستمعَين العامَّين (مثلاً إذا كان تطبيقك يملك بالفعل نظام إبلاغ
عن الأخطاء خاصاً به وتريد فقط استدعاءات throwError اليدوية):
LerixErrorBoundary في التقاط أخطاء العرض بغضّ النظر عن هذا الخيار
— فهو مكوّن منفصل وصريح تتحكّم به عبر مكان وضعه.
الالتقاط التلقائي لتتبّع المكدس
عند استدعاءthrowError() دون تمرير معامل stack، يُلتقط تتبّع مكدس
تلقائياً من موضع الاستدعاء — لا تحتاج لتمريره صراحةً إلا عند الإبلاغ عن
تتبّع مكدس خطأ (Error) ملتقَط بنفسك بدلاً من موضع استدعاء throwError
(مثل error.stack?.split('\n')).
في الحالتين، يُحلَّل كل إطار من إطارات المكدس من موضعه المُجمَّع
(compiled/bundled) إلى ملف المصدر الأصلي وسطره، باستخدام خريطة المصدر
(source map) الخاصة بالبناء نفسه — نفس الآلية التي تستخدمها أدوات
المطوّرين (DevTools) في المتصفح لعرض تتبّعات مكدس مقروءة بدلاً من مواضع
الحزمة (bundle) المُصغَّرة. يحدث هذا تلقائياً؛ لا حاجة لأي إعداد.
يتطلّب التحليل أن تكون خريطة المصدر متاحة على رابط الإطار — وهذا صحيح
دائماً في بيئة التطوير، وصحيح في الإنتاج فقط إذا كان بناؤك يقدّم ملفات
.map علناً. إذا أبقى بناء الإنتاج خرائط المصدر خاصة (خيار شائع)، ترجع
الإطارات إلى موضعها المُجمَّع بدلاً من فشل الإبلاغ — التحليل هو أفضل
محاولة (best-effort) ولا يعطّل أو يؤخّر التقرير نفسه أبداً.