express学习笔记5 - 自定义路由异常处理中间件

修改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

这就完成了

相关推荐
看海天一色听风起雨落7 分钟前
Python学习之装饰器
开发语言·python·学习
小憩-8 分钟前
【机器学习】吴恩达机器学习笔记
人工智能·笔记·机器学习
UQI-LIUWJ37 分钟前
unsloth笔记:运行&微调 gemma
人工智能·笔记·深度学习
googleccsdn38 分钟前
ESNP LAB 笔记:配置MPLS(Part4)
网络·笔记·网络协议
楚肽生物小敏39 分钟前
Cy5-Tyramide, Cyanine 5 Tyramide;1431148-26-3
笔记
speop1 小时前
llm的一点学习笔记
笔记·学习
运维小雅1 小时前
哪些因素会直观地影响到产品销量?
经验分享·笔记·媒体
非凡ghost1 小时前
FxSound:提升音频体验,让音乐更动听
前端·学习·音视频·生活·软件需求
抓饼先生2 小时前
Linux control group笔记
linux·笔记·bash
ue星空2 小时前
月2期学习笔记
学习·游戏·ue5