Phản hồi lỗi
Thuộc phần Kiến thức cơ bản về Express trong hành trình Node.js của Coddy. Bài học 17 trên 23.
Một route có thể thất bại vì máy chủ gặp sự cố. Ném một Error sẽ chuyển lỗi đó cho Express. Trình xử lý lỗi là middleware có bốn tham số, trong đó err đứng đầu tiên. Express gửi các lỗi được ném đến loại middleware này.
app.use((err, req, res, next) => {
res.status(500).json({error: 'Try later'});
});Đặt trình xử lý sau các route. Máy khách nên nhận một thông báo ngắn, còn máy chủ có thể ghi nhật ký thông tin chi tiết. Giữ đủ cả bốn tham số ngay cả khi không dùng next: Express dựa vào cấu trúc của hàm để nhận diện trình xử lý lỗi.
Trước khi thêm trình xử lý, GET /broken trả về trang lỗi HTML mặc định của Express. Gọi next(err) cũng chuyển lỗi đến trình xử lý lỗi; gọi next() sẽ tiếp tục như bình thường.
Thử thách
Dễ“Chạy” chỉ khởi chạy practice-errors/server.js. Các tệp Recipe Box của bạn vẫn nguyên vẹn, và bạn sẽ tiếp tục làm việc với chúng trong bài học tiếp theo.
Nhấn “Chạy” rồi gửi GET /broken để xem trang lỗi mặc định. Thêm trình xử lý lỗi sau các route. Ghi lại err.message bằng console.error, sau đó gửi trạng thái 500 và {"error":"Try later"}. Phản hồi không được để lộ Database offline, nhưng Console phải hiển thị nội dung này.
Các route gây lỗi nằm trong tệp bị khóa practice-errors/routes.js. Giữ nguyên cách gắn route này, rồi viết trình xử lý trong server.js.
Tự làm thử
import routes from './routes.js';
import express from 'express';
const app = express();
app.use(routes);
// Thêm hàm (function) xử lý lỗi vào đây.
app.listen(3000);
Tất cả bài học trong Kiến thức cơ bản về Express
1Máy chủ đầu tiên của bạn
Xin chào, ExpressModule httpThêm tuyến đườngTham số tuyến đường3Middleware
Middleware đầu tiên của bạnTự luyện tập: Playground Express