اذهب إلى المحتوى
  • 0

رسالة الخطأ تظهر حتى مع إستخدام ErrorBoundary في مكون React؟

Adam Ebrahim

السؤال

في مشروع React الخاص بي يحدث خطأ معين وأقوم بعمل catch لهذا الخطأ وتظهر رسالة خطأ من صنعي، ولكن بعد ثانية بالضبط تظهر صفحة الخطأ الخاصة بـ React مما يؤدي إلى إختفاء صفحة التطبيق نفسه حتى مع إستعمال Error Boundaries. لذلك أريد تعطيل ميزة error overlay في وضع التطوير Development mode حتى لا تظهر هذه الرسائل في كل مرة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

أولاً هذا الخطأ error overlay الخاص ب react يظهر فقط في وضع ال Development mode ولن يظهر في ال production mode ويمكنك تعطيل ذلك عن طريق package تسمى react-error-overlay وتستخدم الدالة stopReportingRuntimeErrors كالتالي

أولاً تقوم بإضافة ال package 

yarn add react-error-overlay

ثم قم بعد ذلك بإستخدامها في ال root قبل استخدام ال render كالتالي

import { stopReportingRuntimeErrors } from "react-error-overlay";

if (process.env.NODE_ENV === "development") {
  stopReportingRuntimeErrors(); 
}

.بعد عمل الخطوات السابقة لن تظهر error overlay مرةأخرى

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك القيام بذلك بشكل بسيط دون الإستعادنه بأي مكتبات خارجيه عن طريق عمل capture للإيفنت الخاص بال error عن طريق إضافة الكود التالي في الملف "public/index.html"  في الجزء الخاص ب ال "head"

<script>
      window.addEventListener('error', function(e){
 		// قم بمنع ريأكت من تشغيل ال listener الخاص بهم 
        e.stopImmediatePropagation();
  		// منع المتصفح من عمل console.log للإيرور أيضا
        e.preventDefault();
      });
</script>

في حالة كنت تريد إستخدام error overlay في أي خطأ خارج ال error boundary يمكنك إستخدام الكود التالي

<script>
      window.addEventListener('error', function(e){
        const {error} = e;
        if (!error.captured) {
          error.captured = true;
          e.stopImmediatePropagation();
          e.preventDefault();
          setTimeout(()=>{
            if (!error.shouldIgnore) {
              throw error;
            }
          })
        }
      });
</script>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...