如何从客户端的Node和Express服务器获取完整的错误消息?

时间:2016-12-29 00:49:41

标签: javascript node.js express

我有一条快速路由,返回400状态和错误消息。我想在客户端警告完整的错误消息,但是当我发出警报时警报只显示“对象对象”。我检查了该对象,但是我没有看到从服务器登录到终端的完整错误消息。

在服务器上,错误消息显示“djhbf未定义”,因为我输入了一些随机字符来抛出错误消息。在客户端,该对象具有一些属性,但它们都不包含错误消息“djhbf未定义”。与错误消息最接近的是“status-text:bad request”。如何在客户端检索实际的错误消息“djhbf未定义”?

这是我的server.js代码,它在promise的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);
      });
  }

1 个答案:

答案 0 :(得分:2)

更新

这不是一个明确的问题。 axios修饰错误对象。您只需将客户端console.log更改为:console.log(err.response.data);

由于双方都使用axios,因此您还需要更新服务器端逻辑。试试res.status(400).json({msg: 'There was a problem with your request'});

如果可行,您只需向下钻取服务器端的err对象,即可查看要发送回客户端的内容。

请参阅axios文档的Error Handling部分。