【发布时间】:2021-09-28 11:28:28
【问题描述】:
我正在使用 Express 开发 node.js 来构建后端。 我打算处理可能发生的状态 500 错误。
router.put('/test', async (req, res) => {
try {
return res.send(await request.updateTest(req.body, 1))
} catch(err) {
console.log(err)
return res.status(500).send(err.stack)
}
})
这是我的代码示例。它完美地工作。但是当我尝试从数据库查询中产生未知错误时,我想记录错误并返回状态 500 作为带有错误详细信息的响应。
但是每次我构建一个新的控制器/路由时,我都需要添加 try and catch
有没有我可以用中间件的形式来表达它们,而不是每次都写 try and catch?
这是我尝试将其用作中间件的代码示例,但它没有工作,调用时也没有效果。
error.js
module.exports = function (err, req, res, next) {
console.log(err)
res.status(500).send({
error: 'Internal Server Error',
message: err.stack
})
next(err)
}
main.js
const errorHandler = require('./error')
const { corsOption } = require('./cors')
const cors = require('cors')
const test = require('./test')
module.exports = function (app) {
app.use(cors(corsOption))
app.use(errorHandler)
app.use('/api/test', test)
}
我有什么办法让它工作吗?
【问题讨论】:
-
在支持承诺的 Express 5.0 之前,您不能使用中间件
-
@Bergi,有没有我可以阅读这些版本的文档?
标签: javascript node.js express error-handling