我在我的反应应用程序中使用axios将POST发送到另一台服务器。 如果服务器响应错误500代码,它将显示在chrome dev-tools:
中POST http://192.168.1.2:3001/login 500 (Internal Server Error)
我正在内部处理500代码,这可能会在我的应用中发生,并且不会被视为错误。
是否可以配置axios不在开发工具上记录错误?我不希望最终用户看到它。
答案 0 :(得分:1)
这就是.catch()
处理程序的用途。当axios.post()
返回的承诺被拒绝时,它会被调用:
axios.post(
/* ... */
).then(
response => {/* do something with the response */}
).catch(
error => {/* do something with the error */}
);
但你应该在服务器端真正处理这种情况。服务器不应该故意返回500响应。此响应表示未处理的错误。如果您的服务器处理该错误,它应该返回更合适的错误代码。 500条消息应被视为错误,应该修复,而不是试图将其隐藏起来。
答案 1 :(得分:1)
只是改善了上述...... 为了确保错误来自您的API调用,您可以在axios catch上指定该错误。
axios.post(
/* ... */
).then(
response => {/* do something with the response */}
).catch(
error => if(error.response){
console.log(error.response.data)
// from here you get only the response that is generated from your API
and hence you can differrentiate if the error is local or external
}
);
答案 2 :(得分:0)
以下是处理此案例的示例:
axios.post('/formulas/create', {
name: "",
parts: ""
})
.then(response => {
})
.catch(error => {
});
答案 3 :(得分:0)
对我有用的是以下代码:
axios.post(`${BASE_URL}/`, data, config)
.then(response => {
if (response.data.success) {
console.log(response.data.message);
resolve(response.data.message)
} else {
reject(response.data.message)
}
}).catch(err => {
let e = { ...err
}
console.log(e.response.data);
reject(e.response.data)
})
})