此代码使用axios及其错误对象,但由于密钥不存在而出错,
const axios = require('axios');
axios.get('http://w3c.org/error_here').then(response => {
console.log(response.data);
}).catch(error => {
console.log(error.Error) // not exist
});
该其他代码工作正常,但没有解决如何解决仅输出错误消息(假定在error.Error
之前的提示)。
const axios = require('axios');
axios.get('http://w3c.org/error_here')
.then(response => {
console.log(response.data);
}).catch(error => {
delete error.request
delete error.config
delete error.response
console.log(error) // a string here!
console.log(JSON.stringify(error)) // where??
});
第一个console.log()
输出是一个字符串
Error: Request failed with status code 404 ...
第二个是空对象
{}
那么,字符串(或对象)在哪里?如何做为console.log(error.Error)
来仅仅显示错误消息?
答案 0 :(得分:1)
将评论收集为答案:
使用delete
时,删除了该对象的所有enumerable
成员:
delete error.request
delete error.config
delete error.response
console.log(Object.keys(error)); // Object.keys gets all non-enumerable properties' key of the object into an array
// outputs
[ 'config', 'request', 'response' ]
message
是non-enumerable
属性
console.log(error.propertyIsEnumerable('message'));
// outputs
false
最后,JSON.stringify(error)
为空,因为stringify
(HakerRank) task
有关does not serialize non-enumerable
和MDN
上的enumerable
的更多信息
如何列出 error 对象的不可枚举的属性?也就是说,如何发现存在一个名为“ message”的密钥? 列出所有内容:
console.log(Object.getOwnPropertyNames(error));
删除后,剩下的是[ 'stack', 'message' ]
。