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

プロパティとして Axios 応答のstatusMessageノード応答サーフェスで送信され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 に答える