拦截器不起作用
来源:6-4 项目框架优化
宝慕林4472654
2021-07-05
照抄源码也会有问题 没法拦截404
request : http://localhost:5000/1234
显示: Cannot GET /1234
把拦截器前置是可以触发的 不知道是否版本问题
package.json
{
"name": "admin-imooc-node",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"boom": "^7.3.0",
"express": "^4.17.1"
}
}
app.js
const express = require('express')
const router = require('./router')
// 创建 express 应用
const app = express()
// 监听 / 路径的 get 请求
app.get('/', router)
// 使 express 监听 5000 端口号发起的 http 请求
const server = app.listen(5000, function() {
const { address, port } = server.address()
console.log('Http Server is running on http://%s:%s', address, port)
})
router/index.js
const express = require('express')
const boom = require('boom')
const userRouter = require('./user')
const {
CODE_ERROR
} = require('../utils/constant')
// 注册路由
const router = express.Router()
router.get('/', function(req, res) {
res.send('欢迎学习小慕读书管理后台')
})
// 通过 userRouter 来处理 /user 路由,对路由处理进行解耦
router.use('/user', userRouter)
/**
* 集中处理404请求的中间件
* 注意:该中间件必须放在正常处理流程之后
* 否则,会拦截正常请求
*/
router.use((req, res, next) => {
next(boom.notFound('接口不存在'))
})
/**
* 自定义路由异常处理中间件
* 注意两点:
* 第一,方法的参数不能减少
* 第二,方法的必须放在路由最后
*/
router.use((err, req, res, next) => {
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
写回答
1回答
-
扬_灵
2021-07-05
同学你好,这里显示的应该是接口不存在的提示信息,是有什么问题吗。
022021-07-06
相似问题