Javascript 如何从客户端的节点和Express服务器获取完整的错误消息?
我有一条快速路线,返回400状态和错误消息。我想在客户端警告完整的错误消息,但当我发出警告时,警报只显示“Object Object”。我检查了该对象,没有看到从服务器记录到终端的完整错误消息 在服务器上,错误消息显示“没有定义djhbf”,因为我键入了一些随机字符以抛出错误消息。在客户端,对象有一些属性,但没有一个包含错误消息“djhbf未定义”。最接近错误消息的是“状态文本:错误请求”。如何检索客户端上的实际错误消息“djhbf未定义” 下面是我的server.js代码,它在承诺的catch块中发送错误消息:Javascript 如何从客户端的节点和Express服务器获取完整的错误消息?,javascript,node.js,express,Javascript,Node.js,Express,我有一条快速路线,返回400状态和错误消息。我想在客户端警告完整的错误消息,但当我发出警告时,警报只显示“Object Object”。我检查了该对象,没有看到从服务器记录到终端的完整错误消息 在服务器上,错误消息显示“没有定义djhbf”,因为我键入了一些随机字符以抛出错误消息。在客户端,对象有一些属性,但没有一个包含错误消息“djhbf未定义”。最接近错误消息的是“状态文本:错误请求”。如何检索客户端上的实际错误消息“djhbf未定义” 下面是我的server.js代码,它在承诺的catch
app.post('/sendEmails', function(req, res, next) {
axios.get(FEED_URL)
.then(data => {
let jobs = data.data.jobs;
fetchClients(jobs, 'email').then(() => {
res.sendStatus(200);
})
.catch((err) => {
console.log(err);
res.status(400).json(err);
})
})
.catch(error => {
console.log(error);
});
});
以下是警告错误的客户端代码:
sendEmails() {
axios.post("/sendEmails")
.then(res => {
this.setState({
emailsSent: true,
smsSent: false
});
})
.catch((err) => {
console.log(err);
alert(err);
});
}
更新
这不是一个明确的问题axios
装饰错误对象。您只需要将客户端console.log更改为:console.log(err.response.data)代码>
您还需要更新服务器端逻辑,因为您在两侧都使用axios
。尝试res.status(400).json({msg:'您的请求有问题'})代码>
如果这样做有效,您只需深入服务器端的err
对象,查看要发送回客户端的内容
请参阅axios
文档的部分。服务器产生的错误消息是一个对象。如何处理这样一个对象以使其成为有效的json?我尝试了以下方法:res.status(404).json({status:404,message:json.stringify(err)});但消息仍然作为空对象返回。在客户端,“err”对象实际上没有响应属性。它看起来是这样的:Object{data:Object,status:404,statusText:“未找到”,headers:Object,config:Object…}错误对象的数据属性只包含javascript对象原型,而不是我的消息。我再次更新了它。我认为您应该尝试硬编码一个响应,看看您得到了什么,然后检查catch
中的服务器端错误对象,以确定您到底想要发送回客户端的内容。