修改router/index.js,添加異常處理中間件
**
* 自定義路由異常處理中間件
* 注意兩點(diǎn):
* 第一,方法的參數(shù)不能減少
* 第二,方法的必須放在路由最后
*/
router.use((err, req, res, next) => {
console.log(err);
const msg = (err && err.message) || "系統(tǒng)錯(cuò)誤";
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");
// 注冊(cè)路由
const router = express.Router();
router.get("/", function (req, res) {
res.send("讓我們開始express之旅");
});
/**
* 集中處理404請(qǐng)求的中間件
* 注意:該中間件必須放在正常處理流程之后
* 否則,會(huì)攔截正常請(qǐng)求
*/
router.use((req, res, next) => {
// console.log(req,res)
next(boom.notFound("接口不存在"));
});
/**
* 自定義路由異常處理中間件
* 注意兩點(diǎn):
* 第一,方法的參數(shù)不能減少
* 第二,方法的必須放在路由最后
*/
router.use((err, req, res, next) => {
console.log(err);
const msg = (err && err.message) || "系統(tǒng)錯(cuò)誤";
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;
創(chuàng)建 utils/constant:(為了方便后期統(tǒng)一維護(hù),單獨(dú)拉出來定義)
module.exports = {
CODE_ERROR: -1
}
然后刷新http://localhost:8000/user
?這就完成了文章來源地址http://www.zghlxwxcb.cn/news/detail-622956.html
文章來源:http://www.zghlxwxcb.cn/news/detail-622956.html
到了這里,關(guān)于express學(xué)習(xí)筆記5 - 自定義路由異常處理中間件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!