【发布时间】:2021-01-12 16:25:05
【问题描述】:
使用 ExpressJS 4.16.0、NodeJS 10.15.0 和 KnexJS/Bookshelf,我试图弄清楚错误处理。
在我的应用程序中按预期捕获了错误,但服务器调用的响应中没有返回错误:return res.status(400).send(error);,而是得到了{}。
我该如何解决这个问题?
用户路线:
router.post('/users/register',
async function(req, res, next) {
let user;
try {
user = await UserService.register(req.body);
} catch (error) {
console.log('Route: Catch: ', error); // Will display error from UserService Error here: "column users.emailll does not exist"
return res.status(400).send(error); // Sends `{}` back
}
...
用户服务:
...
try {
user = await new User.User({
emailll: userInput.email // Will throw error in "catch" below because "emailll" is invalid field
}).fetch();
} catch (error) {
// Throws error "column users.emailll does not exist"
console.log('Service: Catch: ', error);
throw new Error(error);
}
来自服务器的响应:{}
我假设由于async await 调用,错误正在某处被吞没?我需要使用this express-async-errors lib 之类的东西吗?
【问题讨论】:
-
顺便说一句
throw new Error(error);可能只是throw error;
标签: javascript node.js express error-handling