无法访问 Javascript async/await try/catch 客户端代码中

http://img.mukewang.com/61c464d00001c70f11980107.jpg

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 可以读取我的消息很烦人,但我不知道如何向用户显示它。显然,该消息已到达浏览器,我将不胜感激有关如何在我的客户端代码中访问它的一些提示!提前致谢。


白衣非少年
浏览 237回答 2
2回答

阿波罗的战车

所述statusMessage在节点响应中发送面在Axios公司响应作为statusText属性。您可以通过查看err.responseAxios 错误的属性来查看与失败请求关联的响应对象。不过要小心;如果由于错误与连接失败等相关err.response而未发出 HTTP 请求,则不存在。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);  }}

蝴蝶刀刀

err.response.statusText在客户端上包含res.statusMessage在服务器上设置的文本。活到老,学到老
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript