Node.js 使用axios从NodeJS express应用程序捕获错误消息
我有一个应用程序在后端使用NodeJS,特别是expressframework来服务API路由。我的客户端是用ReactJS编写的,使用Node.js 使用axios从NodeJS express应用程序捕获错误消息,node.js,reactjs,express,axios,Node.js,Reactjs,Express,Axios,我有一个应用程序在后端使用NodeJS,特别是expressframework来服务API路由。我的客户端是用ReactJS编写的,使用axios发出API请求 第一次使用axios软件包时,我找不到如何从响应中访问错误消息 My API作为错误响应返回: res.status(404).send({ error: 'Error Message' }); 在axios中,我有: axios.post('/api/users', newUser) .then((user) => {
axios
发出API请求
第一次使用axios软件包时,我找不到如何从响应中访问错误消息
My API作为错误响应返回:
res.status(404).send({ error: 'Error Message' });
在axios
中,我有:
axios.post('/api/users', newUser)
.then((user) => {
console.log(`User created: ${JSON.stringify(user)}`);
}).catch((err) => {
console.log(`Error : ${JSON.stringify(err)}`);
});
console.log(`Error:${JSON.stringify(err)}')
打印:
{
"message": "Request failed with status code 404",
"name": "Error",
"stack": "Error: Request failed with status code 404\n at createError (http://localhost:3000/static/js/0.chunk.js:13853:15)\n at settle (http://localhost:3000/static/js/0.chunk.js:14074:12)\n at XMLHttpRequest.handleLoad (http://localhost:3000/static/js/0.chunk.js:13328:7)",
"config": {
"url": "/api/users",
"method": "post",
"data": "someData",
"headers": {
"Accept": "application/json, text/plain, */*",
"Authorization": "Bearer xxxxx",
"Content-Type": "application/json;charset=utf-8"
},
"transformRequest": [
null
],
"transformResponse": [
null
],
"timeout": 0,
"xsrfCookieName": "XSRF-TOKEN",
"xsrfHeaderName": "X-XSRF-TOKEN",
"maxContentLength": -1
}
}
我在服务器的响应消息中找不到err
对象,我甚至尝试过:
res.status(404).json({ error: 'Error Message' });
没有成功。Per,尝试访问
catch
块中的err.response
。Per,尝试访问catch
块中的err.response
。err.response将有一个对象{error:'error Message}
,因此您可以使用err.response.error
访问该对象。还要确保err.response.error
存在,因为如果它不存在,并且您尝试访问它,它将在catch中抛出一个错误,说明err.response.error未定义
axios.post('/api/users', newUser)
.then((user) => {
console.log(`User created: ${JSON.stringify(user)}`);
}).catch((err) => {
if(err.response.error)
console.log(`Error : ${JSON.stringify(err.response.error)}`);
});
err.response
将有一个对象{error:'error Message'}
,因此您可以使用err.response.error
访问该对象。还要确保err.response.error
存在,因为如果它不存在,并且您尝试访问它,它将在catch中抛出一个错误,说明err.response.error未定义
axios.post('/api/users', newUser)
.then((user) => {
console.log(`User created: ${JSON.stringify(user)}`);
}).catch((err) => {
if(err.response.error)
console.log(`Error : ${JSON.stringify(err.response.error)}`);
});
谢谢,我可以在err.response.data中找到。expressjs作为响应发送的所有内容都位于dataobject中,很高兴我能提供帮助!谢谢,我可以在err.response.data中找到。expressjs作为响应发送的所有内容都位于dataobject中,很高兴我能提供帮助!