【发布时间】:2021-04-24 15:54:03
【问题描述】:
我在节点服务器中有一条路由。当请求失败时,我需要发回一个可以在前端轻松捕获的错误。
基本上,我会这样做:
// server
app.get("/user/:id", async (req, res) => {
try{
const user = User.find(req.params.id)
return res.status(200).json({user});
}
catch(err){
throw new Error("error.user.route")
}
});
// front
function fetchUser(id){
return api.get("/user/" + id)
.then(res=> res.data.user)
.catch(err=> err.message)
}
// somewhere in the dom
error && error.message
它工作正常,我可以将明确的错误消息传递给客户端,但是当服务器抛出错误时,它也会停止。在本地开发中调试非常好,但我不能在生产中出现这种行为。
我尝试简单地发送new Error("my message") 而不是投掷,但它没有落在catch 中。我可以发送res.json({error: "my message"}),但我想避免在我的前端处理条件错误。
有没有办法确保节点中的错误总是落在 api 调用的捕获而不导致服务器崩溃?
【问题讨论】:
标签: node.js express error-handling