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

السؤال

نشر

في مشروع 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...