修改router/index.js,添加异常处理中间件
*** 自定义路由异常处理中间件* 注意两点:* 第一,方法的参数不能减少* 第二,方法的必须放在路由最后*/
router.use((err, req, res, next) => {console.log(err);const msg = (err && err.message) || "系统错误";const statusCode = (err.output && err.output.statusCode) || 500;const errorMsg =(err.output && err.output.payload && err.output.payload.error) ||err.message;res.status(statusCode).json({code: CODE_ERROR,msg,error: statusCode,errorMsg,});
});
完整代码
const express = require("express");
const boom = require("boom");
const { CODE_ERROR } = require("../utils/constant");// 注册路由
const router = express.Router();router.get("/", function (req, res) {res.send("让我们开始express之旅");
});
/*** 集中处理404请求的中间件* 注意:该中间件必须放在正常处理流程之后* 否则,会拦截正常请求*/
router.use((req, res, next) => {// console.log(req,res)next(boom.notFound("接口不存在"));
});
/*** 自定义路由异常处理中间件* 注意两点:* 第一,方法的参数不能减少* 第二,方法的必须放在路由最后*/
router.use((err, req, res, next) => {console.log(err);const msg = (err && err.message) || "系统错误";const statusCode = (err.output && err.output.statusCode) || 500;const errorMsg =(err.output && err.output.payload && err.output.payload.error) ||err.message;res.status(statusCode).json({code: CODE_ERROR,msg,error: statusCode,errorMsg,});
});
module.exports = router;
创建 utils/constant:(为了方便后期统一维护,单独拉出来定义)
module.exports = {CODE_ERROR: -1
}
然后刷新http://localhost:8000/user
这就完成了