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

这就完成了

相关推荐
東雪木10 分钟前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
GHL28427109013 分钟前
换脸工作流学习
学习·ai
_李小白35 分钟前
【android opencv学习笔记】Day 28: 滤波算法之中值滤波器
android·opencv·学习
Oll Correct42 分钟前
实验二十九:TCP的运输连接管理
网络·笔记
飞翔中文网2 小时前
Java学习笔记之抽象类与接口(设计思想)
java·笔记·学习
智者知已应修善业3 小时前
【proteus设计文氏正弦波信号发生器】2023-5-9
驱动开发·经验分享·笔记·硬件架构·proteus·硬件工程
土星碎冰机3 小时前
xxljob学习(大白话版本)
学习·运维开发
吃好睡好便好3 小时前
说说免疫力的维护
学习·生活
凉、介4 小时前
深入理解 ARMv8-A|处理器模式与寄存器
笔记·学习·嵌入式·arm
z200509304 小时前
【linux学习】深入理解linux文件I/O,从C标准库到内核态
linux·学习·操作系统