对象在哪里?如何获取有关错误消息的简单键值对?

时间:2019-04-13 13:36:45

标签: node.js axios

此代码使用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)来仅显示错误消息?

1 个答案:

答案 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' ]

messagenon-enumerable属性

console.log(error.propertyIsEnumerable('message'));
// outputs
false

最后,JSON.stringify(error)为空,因为stringify (HakerRank) task

有关does not serialize non-enumerableMDN上的enumerable的更多信息


如何列出 error 对象的不可枚举的属性?也就是说,如何发现存在一个名为“ message”的密钥? 列出所有内容:

console.log(Object.getOwnPropertyNames(error));

删除后,剩下的是[ 'stack', 'message' ]