<template><div>This will trigger an error in two seconds.</div></template><scriptsetup>
onMounted(()=>{thrownewError('bob')})</script>
pages/index.vue:
<template><div><NuxtErrorBoundary @error="someErrorLogger"><SomeErroringComponent/><template #error="ctx"> An error happened. </template></NuxtErrorBoundary></div></template><scriptsetup>function someErrorLogger(err){
console.log('got an error', err);}</script>
ألاحظ أنني عندما أقوم بالدخول مباشرة للصفحة عبر مربع البحث, فإن هذا المكون (NuxtErrorBoundary) لا يقوم بعمله, بل تظهر صفحة الخطأ 500
لكن عندما أقوم بالدخول إليها عبر مكون NuxtLink فهي تعمل
أظن هذا يحدث بسبب أن الدخول إلى الصفحة مباشرة عبر مربع البحث يجعل Nuxt يقوم بعملية الـ rendering من السيرفر وبالتالي يشغل الكود throw new error("this is error") من هناك, بالتالي السيرفر يرسل كنتيجة صفحة 500
لكن إذا دخلت إلى الصفحة من المكون NuxtLink فإن Nuxt يقوم بعملية الـ rendering من المتصفح, ومنه تشغيل كود throw new error("this is error") وبالتالي مكون NuxtErrorBoundary يعمل
لكن سؤالي هو لو كان لدي صفحة منتجات على سبيل المثال وأردت استخدام NuxtErrorBoundary لإظهار عنصر معين عند حدوث Error في عرض المنتجات فكيف أقوم بهذا باعتبار أن الـ Error سيحدث في السيرفر
السؤال
مصطفى اوريك
لدي الكود التالي:
components/SomeErroringComponent.vue:
pages/index.vue:
ألاحظ أنني عندما أقوم بالدخول مباشرة للصفحة عبر مربع البحث, فإن هذا المكون (NuxtErrorBoundary) لا يقوم بعمله, بل تظهر صفحة الخطأ 500
لكن عندما أقوم بالدخول إليها عبر مكون NuxtLink فهي تعمل
أظن هذا يحدث بسبب أن الدخول إلى الصفحة مباشرة عبر مربع البحث يجعل Nuxt يقوم بعملية الـ rendering من السيرفر وبالتالي يشغل الكود throw new error("this is error") من هناك, بالتالي السيرفر يرسل كنتيجة صفحة 500
لكن إذا دخلت إلى الصفحة من المكون NuxtLink فإن Nuxt يقوم بعملية الـ rendering من المتصفح, ومنه تشغيل كود throw new error("this is error") وبالتالي مكون NuxtErrorBoundary يعمل
لكن سؤالي هو لو كان لدي صفحة منتجات على سبيل المثال وأردت استخدام NuxtErrorBoundary لإظهار عنصر معين عند حدوث Error في عرض المنتجات فكيف أقوم بهذا باعتبار أن الـ Error سيحدث في السيرفر
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.