我已经用Node.js制作了Api,但是我在错误处理方面有一些奇怪的行为。 您可以在下面看到代码。我正在使用node.js检查表单,如果该表单无效,我将向错误消息发回前端。 我可以从error.response.data.message(catch)的前端获取它(错误400和409)。
如果我无法找到用户发送的信息,则用axios进行API调用后,我会以与以前相同的方式返回错误,但是那时候在前端,我在error.response.data上得到了错误。 response.data.message(错误404)。
所以要在error.response.data.message上接收它,我这次必须发送这样的错误:error.message。
它正在工作,但是我只是想了解到底发生了什么。
在此先感谢您的帮助!!!!!!
let error={response:{data:{message:"Thanks to fill properly all
fields!!"}}}
if (formValid.length>0){ res.status(400).send(error);}
else{
axios.get('https://someapi',{headers:
{
"Authorization" : "XXXXXXX"
}
})
.then(response => {
var newUser = new User({username:req.body.username....});
User.register(newUser,req.body.password, function(err, user){
if(err){
res.status(409).send(err);
}
else{
res.status(200).send();
}
})
}).catch(e => {
error={response:{data:{message:"The information you sent seem
wrong please check it again...}}}
res.status(404).send(error);
})}
}
答案 0 :(得分:0)
确切地说,如果您通过将其记录到控制台中观察到上述错误,您将看到它直接包含了message属性,并且该message属性已绑定到response的data属性,但是在以下情况下,您将传递嵌套的javascript对象到错误属性,这又将响应属性添加到错误对象中,因此您需要通过error.response.data访问该消息。响应.....因此,在这种情况下,整个javascript对象都会添加到data属性中,从而导致该结果。