Javascript 如何使用React处理Node.js API错误

Javascript 如何使用React处理Node.js API错误,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,我目前正在Node.js和React客户端的帮助下开发一个RESTful API 我刚刚开始,即通过注册表创建用户,我意识到我真的不知道如何处理API发送给我的错误 例如,如果我想使用已使用的用户名注册,则API的控制器将抛出一个错误: throw {status: 422, message: "Username already used"} 我的React客户端将检索它并在控制台中显示它,但它会显示一个非常普遍的错误(请求失败,状态代码422),而不是消息“Username ready us

我目前正在Node.js和React客户端的帮助下开发一个RESTful API

我刚刚开始,即通过注册表创建用户,我意识到我真的不知道如何处理API发送给我的错误

例如,如果我想使用已使用的用户名注册,则API的控制器将抛出一个错误:

throw {status: 422, message: "Username already used"}
我的React客户端将检索它并在控制台中显示它,但它会显示一个非常普遍的错误(请求失败,状态代码422),而不是消息“Username ready used”


有人对这个有想法吗​​如何解决我的问题?还是其他处理错误的方法?

您应该使用
new
关键字抛出错误。然后您应该能够显示消息

throw new Error('Username already used')
或者,如果您使用的是express,您可以这样做:

res.status(422).send('Username already used')

您应该使用
new
关键字抛出错误。然后您应该能够显示消息

throw new Error('Username already used')
或者,如果您使用的是express,您可以这样做:

res.status(422).send('Username already used')
试试这个:

.catch((err) => {
    console.log(err.response); // err.response.status will give you the error code.
})
试试这个:

.catch((err) => {
    console.log(err.response); // err.response.status will give you the error code.
})

这已经很晚了,但我明白了为什么你的自定义错误没有显示出来。在catch块中,而不是控制台日志记录:

err.message
尝试记录:

err.**response**

在您的控制台中查看并相应地显示:)

这已经很晚了,但我找到了为什么您的自定义错误没有显示出来。在catch块中,而不是控制台日志记录:

err.message
尝试记录:

err.**response**

在控制台中查看此信息并相应显示:)

我使用此信息收到“错误:请求失败,状态代码为500”,但仍然不是我的自定义错误消息:/我使用的是Express,但您的第二个建议仍然没有给我自定义消息,然后您可以检查状态代码,在您的情况下为422,并根据此代码在您的React应用程序中显示错误消息。但我如何才能在我的React应用程序中获取状态代码?@Paul28000您
console.log(err)
display做了什么?我使用此命令获得“错误:请求失败,状态代码为500”,仍然不是我的自定义错误消息:/I我正在使用Express,但您的第二个建议仍然没有给我自定义消息。然后,您可以检查状态代码,在您的情况下为422,并根据此代码在您的React应用程序中显示错误消息。但我如何在我的React应用程序中获取状态代码?@Paul28000您认为console.log(err)是什么display?您描述的错误是有效的响应。您应该检查状态代码,然后更改React状态,以便为用户呈现一条漂亮的消息。@Davidtroon我如何在React应用程序中检查状态代码?这取决于您使用的http库。看起来它应该位于
res.status
。如果我在.catch中使用console.log res.status,则我使用的是express。值为未定义。您描述的错误是有效的响应。您应该检查状态代码,然后更改React状态,以便为用户呈现一条漂亮的消息。@Davidtroon我如何在React应用程序中检查状态代码?这取决于您使用的http库。看起来应该是
res.status
。如果我在.catch中使用console.log res.status,那么我使用的是express。该值未定义