0

在此处输入图像描述

Chrome 可以读取服务器提供的消息,(No project found for 70100)但是当我console.log(err.message)得到Request failed with status code 400

客户端代码:

const doFetch = async () => {
      try {
          const {data} = await axios.post('/docs/query/project', {projectId: '70100'});
          console.log(data);
          setFetched(data);

      } catch (err) {
        console.log(err.message);
      }
    }

服务器代码:

try {
        const docs = await docsDb.getProject(projectId);
        res.json(docs);
    } catch(err) {
        res.statusMessage = `No project found for ${projectId}`;
        res.status(400).end();
    }

Chrome 可以阅读我的消息很烦人,但我不知道如何向用户显示它。显然,该消息已传至浏览器,我将不胜感激有关如何在我的客户端代码中访问它的一些提示!提前致谢。

4

2 回答 2

1

err.response.statusText客户端上包含服务器上设置的文本res.statusMessage

活到老,学到老

于 2019-11-12T00:13:59.673 回答
1

statusMessage节点响应中发送的 Axios 响应中的表面作为statusText属性。您可以通过查看err.responseAxios 错误的属性来查看与失败请求关联的响应对象。不过要小心;如果由于错误与连接失败等相关的错误而没有发出 HTTP 请求,err.response则不会存在。

const doFetch = async () => {
  try {
    const {data} = await axios.post('/docs/query/project', {projectId: '70100'});
    setFetched(data);
  } catch (err) {
    const message = err.response
      ? `Request failed with ${err.response.status}: ${err.response.statusText}`
      : err.message;
    console.error(message);
  }
}
于 2019-11-12T00:15:43.717 回答