我在服务器上返回错误时遇到问题。当在本地主机上运行时-一切正常,自定义错误返回到客户端。在部署到主机(Heroku,Render等)后,有效的请求按预期工作,但当错误发生时-我收到500,而不是我想返回的自定义错误。
尝试了几个错误处理程序,但没有任何结果。
错误处理程序(服务器)
const errorHandler = (error, request, response, next) => {
console.log(error);
if (error.errorType !== undefined && error.errorType.isShowStackTrace){
response.status(error.errorType.httpCode).json({message: error.errorType.message});
return;
}
response.status(700).json({message: 'GENERAL ERROR OCCURED'});
}
module.exports = errorHandler;
请求(客户)
try{
const response = await axios.post("https://myUrl.com/users/login", user);
localStorage.setItem("token", response.data.token);
return response.data;
}
catch (err : any){
return err;
}
预期自定义错误,但得到500
2条答案
按热度按时间nlejzf6q1#
所有有效的HTTP状态代码都在100到599(包括100和599)的范围内。
rfc9110规范清楚地表明这些是可扩展的,但前提是您遵循上面的规则(着重号是添加的):
HTTP状态代码是可扩展的。客户端不需要理解所有注册状态代码的含义,尽管这样的理解显然是需要的。但是,客户端必须理解任何状态代码的类别,如第一位数字所指示的,并将无法识别的状态代码视为等同于该类别的x00状态代码。
换句话说,系统需要知道您正在发送一个服务器错误,它以
5
开头,或者客户端错误以4
开头。4ngedf3f2#
我不是节点方面的Maven,但这是中间件吗?尝试调用next()