Menu
CoddyTech

استجابة خطأ

جزء من قسم أساسيات Express في رحلة Node.js على Coddy. الدرس 17 من 23.

قد يفشل المسار بسبب حدوث خطأ ما على الخادم. يؤدي طرح خطأ إلى تمرير ذلك الفشل إلى Express. معالج الأخطاء هو وسيط يتضمن أربعة معاملات، ويكون err أولها. يرسل Express الأخطاء المطروحة إلى هذا النوع من الوسائط.

app.use((err, req, res, next) => {
    res.status(500).json({error: 'Try later'});
});

ضع المعالج بعد المسارات. ينبغي أن يتلقى العميل رسالة قصيرة، بينما يمكن للخادم تسجيل التفاصيل. أبقِ على المعاملات الأربعة جميعها حتى إن لم يُستخدم next: يتعرّف Express على معالجات الأخطاء من شكل الدالة.

قبل إضافة معالج، يعرض GET /broken صفحة أخطاء HTML الخاصة بـ Express. كما يؤدي استدعاء next(err) إلى تمرير خطأ إلى معالج الأخطاء؛ أما استدعاء next() فيتابع التنفيذ بشكل طبيعي.

challenge icon

التحدي

سهل

شغّل practice-errors/server.js فقط. ملفات Recipe Box لم تتغير، وستتابع العمل عليها في الدرس التالي.

شغّل وأرسل GET /broken لرؤية صفحة الخطأ الافتراضية. أضف معالجًا للأخطاء بعد المسارات. سجّل err.message باستخدام console.error، ثم أرسل الحالة 500 و{"error":"Try later"}. يجب ألا تكشف الاستجابة عن Database offline، لكن يجب أن تعرضها وحدة التحكم.

المسارات التي تطلق الأخطاء موجودة في practice-errors/routes.js المقفل. أبقِ عملية تركيبه كما هي؛ واكتب المعالج في server.js.

جرّب بنفسك

import routes from './routes.js';
import express from 'express';
const app = express();
app.use(routes);
// أضف معالج الأخطاء هنا.
app.listen(3000);

جميع دروس أساسيات Express

تدرّب بنفسك: Playground لـ Express