У меня есть длинный код узла, который через некоторое время напечатает ошибку [RangeError: Maximum call stack size exceeded]
и продолжит делать это на неопределенный срок.Ошибка трассировки стека узла
Чтобы отследить, что рекурсивный вызов является причиной этого (я не мог найти где-рекурсивной, что я не использовал либо setTimeout
или process.nextTick
на), я сделал это:
process.on('uncaughtException', function(error) {
console.log(error);
console.log(error.stack);
});
Это застало ошибку , но свойство stack
- undefined
! Я попытался выбросить свою собственную ошибку, а свойство stack
отображает ожидаемый стек. Является ли узел не должен иметь stack
в ошибке переполнения стека? Как я могу определить, какие вызовы вызывают это?
«console.trace» производит что-то более значимое? – Wex
попробуйте 'console.log (error.stack || error) ... это будет печатать стек, если аргумент' error' имеет тип 'Error' ... Если он имеет тип' String', он будет явно печатать сообщение ... –