如何使用Node.js解释Http错误消息中的异常行为

时间:2019-04-29 18:11:58

标签: node.js http

我已经用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);
    })}
}

1 个答案:

答案 0 :(得分:0)

确切地说,如果您通过将其记录到控制台中观察到上述错误,您将看到它直接包含了message属性,并且该message属性已绑定到response的data属性,但是在以下情况下,您将传递嵌套的javascript对象到错误属性,这又将响应属性添加到错误对象中,因此您需要通过error.response.data访问该消息。响应.....因此,在这种情况下,整个javascript对象都会添加到data属性中,从而导致该结果。