当JSON.stringify显示空对象但实际上它不是空的时,如何获取实际内容

qxgroojn  于 2023-10-21  发布在  其他
关注(0)|答案(2)|浏览(135)

我正在尝试记录我的错误并向通道发送通知。当我使用console.log()时,我得到错误消息的描述,但当我使用JSON.strigify时,它返回一个空对象。请问如何解决这个问题。
当我运行这段代码时:

console.log(err);
console.log("stringify", JSON.stringify(err));

我得到这样的回应:

ReferenceError: School is not defined
    at /Users/macbookpro/Documents...
    at Layer.handle [as handle_request] (/Users/macbookpro/Documents...
    at next (/Users/macbookpro/Documents...
    at adminAccess (/Users/macbookpro/Documents...
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
strinfify {}

我需要错误消息,为了使用axios成功发送它,我需要使用JSON.stringify()错误消息。

byqmnocz

byqmnocz1#

错误对象上的大多数属性都是non-enumerable,所以你需要这样做:

let error = new Error('nested error message');

console.log(JSON.stringify(error))
console.log(JSON.stringify(Object.assign({}, 
      error,
      {      // Explicitly pull Error's non-enumerable properties
        name: error.name, 
        message: error.message, 
        stack: error.stack
      }
    )))
1sbrub3j

1sbrub3j2#

最简单的选择是向JSON.stringify添加附加参数

JSON.stringify(error, Object.getOwnPropertyNames(error))

错误对象属性是不可验证的,因此如果不显式指定它们,就无法获取它们。但是如果你获取属性名作为JSON.stringify的第二个参数,你就可以检索它们。

相关问题