无法访问 res.statusMessage in Javascript async/await try/catch 客户端代码以读取从 express 后端抛出的异常
Can't access res.statusMessage in Javascript async/await try/catch client code to read exception thrown from express backend
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 可以阅读我的消息,但我不知道如何向用户显示它,这很烦人。显然,该消息已到达浏览器,我将不胜感激有关如何在我的客户端代码中访问它的一些提示!提前致谢。
客户端上的 err.response.statusText
包含服务器上 res.statusMessage
中设置的文本。
生活和学习
在 Axios 响应的节点响应表面中发送的 statusMessage
作为 statusText
属性。您可以通过查看 Axios 错误的 err.response
属性 来查看与失败请求关联的响应对象。不过要小心;如果因为错误与连接失败等问题有关而没有发出 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);
}
}
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 可以阅读我的消息,但我不知道如何向用户显示它,这很烦人。显然,该消息已到达浏览器,我将不胜感激有关如何在我的客户端代码中访问它的一些提示!提前致谢。
err.response.statusText
包含服务器上 res.statusMessage
中设置的文本。
生活和学习
在 Axios 响应的节点响应表面中发送的 statusMessage
作为 statusText
属性。您可以通过查看 Axios 错误的 err.response
属性 来查看与失败请求关联的响应对象。不过要小心;如果因为错误与连接失败等问题有关而没有发出 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);
}
}