2016-04-27 29 views
1

現在我知道爲什麼我避免像圖書館應該是修改對象原型NPM「應當」的對象調用JSON.stringify時庫會導致循環引用錯誤

它看起來像我得到這個錯誤:

TypeError: Converting circular structure to JSON 

當我require('should')

這是預期嗎?

調用JSON.stringify之前,我可以從對象中刪除的屬性將字符串化的,像這樣:

delete obj.should; 
    delete obj.getShould; 

但是這是很難用嵌套對象等做我不得不說,這是非常這應該導致這種跛腳,但也許我做錯了什麼。如何解決這個問題?我正在編寫一個庫,用戶可能require('should'),所以我必須防範這種類型的問題。

+0

事實證明,上述類型錯誤來自調用JSON.stringify在從由圖書館應該是 –

回答

2

儘管輸出略有不同,但util.inspect()提供的輸出沒有循環引用,因此不會打破它。它還提供了定製對象檢查的手段。它會對你有用嗎?

+0

由於它的工作原理現在拋出斷言錯誤會導致錯誤的對象上,但最終我將需要與JSON –

1

Should沒有在對象上直接設置性的判定,而是在它的propotype

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

它必須是別的東西,以防止一個對象被序列化。

+0

序列化對象呀,錯誤實際上是由should lib所提供的斷言錯誤對象調用JSON.stringify的結果 –

相關問題