תגובה עם שגיאה
חלק מהיחידה יסודות 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 מחזירה את דף השגיאה של Express עצמו בפורמט HTML. קריאה ל־next(err) גם מעבירה שגיאה למטפל השגיאות; קריאה ל־next() ממשיכה כרגיל.
אתגר
קלההפעלה מריצה רק את practice-errors/server.js. קובצי Recipe Box שלך נשארים ללא שינוי, ותמשיך לעבוד עליהם בשיעור הבא.
הפעל ושלח GET /broken כדי לראות את דף השגיאה שמוצג כברירת מחדל. הוסף מטפל שגיאות אחרי הנתיבים. תעד את err.message באמצעות console.error, ואז שלח סטטוס 500 ואת {"error":"Try later"}. התגובה לא חייבת לחשוף את Database offline, אבל הוא חייב להופיע ב-Console.
הנתיבים שזורקים שגיאות נמצאים בקובץ הנעול 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
תרגלו בעצמכם: Express אונליין