在对象上调用JSON.stringify时,NPM“应该”库会导致循环引用错误

时间:2016-04-27 23:00:16

标签: json node.js stringify

现在我知道为什么我要避免修改对象原型的库

看起来我收到了这个错误:

TypeError: Converting circular structure to JSON

当我require('should')

这是预期的吗?

在调用JSON.stringify之前,我可以删除要对其进行字符串化的对象的属性,如下所示:

  delete obj.should;
  delete obj.getShould;

但是对于嵌套对象等很难做到这一点。我不得不说,这应该导致这种情况非常蹩脚,但也许我做错了。如何解决这个问题?我正在编写一个库,用户可能require('should')所以我必须防止这类问题。

2 个答案:

答案 0 :(得分:2)

尽管输出稍有不同,但util.inspect()提供的输出没有循环引用,但却没有。它还提供了自定义对象检查的方法。它会对你有用吗?

答案 1 :(得分:1)

Should没有直接在对象上设置属性,而是在propotype上设置:

Object.defineProperty(Object.prototype, 'should', {
  set: function(){},
  get: function(){
    return should(this);
  },
  configurable: true
});

必须是阻止对象序列化的其他东西。