6 javascript error-handling node.js express
我有一个调用的函数a接受一个回调,如果有一个错误,则调用该错误.
a在Express路径请求中调用.如果出现错误,则错误应该是请求的响应.
function a(cb) {
cb(new Error('Some error message'))
}
app.get('/', function (req, res) {
a(function (error) {
if (error) {
res.json(error, 400)
}
res.send('No error')
})
})
Run Code Online (Sandbox Code Playgroud)
我已经查看了Express的代码,看起来res.json会将我的字符串化error.但是,结果是一个空字符串:
> var e = new Error('Some error message')
undefined
> JSON.stringify(e)
'{}'
> e.message
'Some error message'
Run Code Online (Sandbox Code Playgroud)
有一些方法可以让我的路由返回错误信息,例如toString在我的路线中转换错误对象.但是,我想知道在Node API中格式化错误消息的最佳做法是什么,以及这是否会改变这里的内容.我应该以不同方式格式化错误消息,还是应该只处理Error路径中的对象,例如:
res.json({ error: error.message }, 400)
Run Code Online (Sandbox Code Playgroud)
要添加到@ steveukx的答案,您可以.use通过一个arity为4的函数在express中指定错误处理程序.
app.use(function(err, req, res, next){
res.json(500, {
error: err.message
});
});
Run Code Online (Sandbox Code Playgroud)
每当你这样做时都会被调用next(err).查看文档.
快速路由可以使用第三个参数next,该参数可用于通过调用跳过当前路由next(),或通过调用传递错误next(err)。
尝试使用:
app.get('/', function (req, res, next) {
a(function (error) {
if (error) {
next(error);
}
else {
res.send('No error')
}
});
});
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请查看http://expressjs.com/api.html#app.param
| 归档时间: |
|
| 查看次数: |
5156 次 |
| 最近记录: |