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

这就完成了

相关推荐
笨鸟笃行35 分钟前
英语学习——单词篇(第十七天)
学习
nenchoumi311936 分钟前
ROS2 Humble 笔记(十二)launch 文件与 namespace 启动多个节点
笔记·机器人·ros2
CwSy_41 分钟前
openlab配置作业
笔记
d111111111d1 小时前
STM32TIM定时器外设学习,输出比较模式(舵机,驱动直流电机)
笔记·stm32·单片机·嵌入式硬件·学习
立志成为大牛的小牛1 小时前
数据结构——四十、折半查找(王道408)
数据结构·学习·程序人生·考研·算法
东方欲晓w2 小时前
Git高效开发:常用命令速查指南
git·stm32·学习
nenchoumi31192 小时前
ROS2 Humble 笔记(十)多机分布式通讯 DDS 与宿主机和Docker容器
笔记·机器人·ros2
清钟沁桐2 小时前
mlir 编译器学习笔记之六 -- 经典实现
笔记·学习·mlir
xiaoxiaoxiaolll3 小时前
Nat Commun:中国团队演示光纤阵列中的里德堡阻塞,为高保真度两比特门奠定基础
学习·量子计算
zhangxuyu11183 小时前
Vue2 学习记录--语法部分
学习