-1
function repErr(key, value) {
  let error = {};
  Object.getOwnPropertyNames(value).forEach(function (key) {
      error[key] = value[key];
  });
  return error;
}

当我调用 JSON.stringify(err, repErr) 时,我在控制台中看到错误太多递归。
我有 firefox 68,我在每次迭代时都调用了调试器,我看到在第四遍时它开始向对象添加类似这样的内容:

{
  0: 'h',
  1: 't',
  2: 't',
  3: 'p',
  // and etc
}

是什么原因,可以修复吗?

4

1 回答 1

2

该对象很可能包含循环,其中树中的一个对象引用另一个对象,该对象最终引用该第一个对象。我发现这个问题经常发生,axios因为响应对象引用了请求对象,而请求对象引用了响应对象。

这是一个经常困扰我们的恼人问题。值得庆幸的是,有类似的库json-decycle和其他库可以通过将循环引用更改为可以在没有堆栈溢出的情况下进行序列化的东西来解决这个问题。

于 2020-03-21T01:31:40.730 回答