يمكننا اختبار Sentry من خلال بنية الإنتاج عن طريق إدخال:
yarn build
ومن مجلد البناء أدخل:
npx http-server -c-1
المشكلة التي نواجهها على الفور هي أن سجلات أخطاء Sentry تشير إلى أرقام الأسطر في الدفعة المصغرة؛ ليست مفيدة جدا.
تشرح خدمة Sentry ذلك عن طريق سحب خرائط المصدر للحزمة المخفضة بعد تلقي خطأ. في هذه الحالة نحن نعمل من المضيف المحلي (لا يمكن الوصول إليه عن طريق خدمة الحراسة).
الحلول (خرائط المصدر)
الحل لهذه المشكلة هو تشغيل التطبيق من خادم ويب عام. زر رد واحد بسيط لاستخدام خدمة صفحات GitHub (مجانًا). عادة ما تكون خطوات الاستخدام كما يلي:
انسخ محتويات المجلد نساعدك في بناء إلى مجلد مستندات في الدليل الجذر للمستودع.
شغله جيثب الصفحات في المستودع (من GitHub) لاستخدام مجلد المستندات فيه رئيسي الفروع
ادفع التغييرات إلى GitHub
لاحظ: بعد أن اكتشفت ما أحتاج إلى استخدامه إنشاء-إنشاء-التطبيق وظيفة الصفحة الرئيسية لبدء التطبيق. جاء لإضافة ما يلي إلى package.json:
تقرير الخطأ هذا لا يمكن أن يكون أكثر وضوحًا، BRAVO.
رسم توضيحي للأخطاء غير المحسوبة
وبالمثل، دعونا نذهب من خلال النقر على الزر خطأ.
مع ظهور خطأ مثل هذا:
معالجة أفضل للأخطاء غير المحسوبة (العرض)
مقدمة لحدود الخطأ
لا ينبغي أن يؤدي خطأ JavaScript في جزء من واجهة المستخدم إلى تعطيل التطبيق بأكمله. لحل هذه المشكلة لمستخدمي React، يقدم React 16 مفهومًا جديدًا يسمى "حدود الخطأ".
حدود الأخطاء هي مكونات React التي تكتشف أخطاء JavaScript في أي مكان في شجرة المكونات الفرعية الخاصة بها، وتسجل تلك الأخطاء، وتقدم واجهة مستخدم احتياطية بدلاً من شجرة المكونات التي تعطلت. تلتقط حدود الأخطاء الأخطاء أثناء العرض، وفي أساليب دورة الحياة، وفي مُنشئات الشجرة بأكملها الموجودة أسفلها.
...
سلوك جديد للأخطاء غير المكتشفة
هذا التغيير مهم. اعتبارًا من React 16، ستؤدي الأخطاء التي لم يتم اكتشافها بواسطة أي حد للخطأ إلى إلغاء تحميل شجرة مكونات React بأكملها.
التوضيح المهم الذي استغرق مني بعض الوقت قبل أن أدرك ذلك هو ذلك يعمل السلوك أعلاه فقط مع الأخطاء التي تظهر في طريقة العرض (أو على الأرجح في أي من طرق دورة الحياة). على سبيل المثال، استخدام حدود الخطأ لن يفيد الزر الخاص بنا خطأ; كان هذا الخطأ في معالج النقر.
لنقم بإنشاء مثال لخطأ في العرض ثم نستخدم حدود الأخطاء للتعامل مع الخطأ بشكل أكثر رشاقة.