Menu
CoddyTech

错误响应

本课属于 Coddy Node.js 学习旅程的“Express 基础”单元。第 17 课,共 23 课。

路由可能会因为服务器上发生错误而失败。抛出 Error 会将这个错误交给 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() 则会正常继续。

challenge icon

挑战

简单

“运行”只会启动 practice-errors/server.js。Recipe Box 文件不会受到影响,你可以在下一课继续使用它们。

点击“运行”,然后发送 GET /broken,查看默认错误页面。在路由后添加错误处理程序。使用 console.error 记录 err.message,然后发送状态码 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 基础中的所有课

自己练习: Express 在线编辑器