在对象上调用JSON.stringify时,NPM'should'库会导致循环引用错误

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

它看起来像我得到这个错误:

TypeError: Converting circular structure to JSON 

当我require('should')

这是预期的吗?

在调用JSON.stringify之前,我可以从要被string化的对象中删除属性,如下所示:

  delete obj.should; delete obj.getShould; 

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

尽pipe输出稍有不同,但util.inspect()提供的输出没有循环引用。 还提供了定制对象检查的手段。 它会为你工作吗?

Should不是直接在物体上设置固有的东西 ,而是在原型上 :

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

它必须是别的东西,防止对象被序列化。