2016-04-27 4 views
1

Теперь я знаю, почему я избегаю библиотек, как это должно изменить объект прототипНОГО «должен» библиотека вызывает круговую эталонную ошибку при вызове JSON.stringify на объекте

Похоже, я получаю эту ошибку:

TypeError: Converting circular structure to JSON 

, когда I require('should')

Ожидаемо ли это?

перед вызовом JSON.stringify, я могу удалить свойства из объекта строковых следующим образом:

delete obj.should; 
    delete obj.getShould; 

, но это трудно сделать с вложенными объектами и т.д. Я должен сказать, что это довольно хромой, что должно вызвать это, но, возможно, я делаю что-то неправильно. Как решить эту проблему? Я пишу библиотеку, а пользователь может require('should'), поэтому я должен защищать эту проблему.

+0

: TypeError выше происходит от вызова JSON.stringify on на объекте ошибки, который возникает из-за ошибки утверждения, созданной библиотекой should –

ответ

2

Хотя с немного отличающимся выходом, util.inspect() обеспечивает выход без круговой ссылки, нарушающей его. Также он предоставляет средства для настройки проверки объекта. Будет ли это работать на вас?

+0

Да, спасибо, пока это работает, хотя в конечном итоге мне нужно будет сериализовать объекты с помощью JSON –

1

Should не установка непосредственно на Недвижимость Болгарии Недвижимости объекта, а на это propotype:

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

Это должно быть что-то другое, что предотвращает объект из сериализации.

+0

да , ошибка на самом деле является результатом вызова JSON.stringify на объект ошибки утверждения, предоставленный if lib –

 Смежные вопросы

  • Нет связанных вопросов^_^