2016-03-02 4 views
0

Я использую инспектор узлов, и я заметил, что new Error() имел неопределенные стеки.NodeJS Error Stack Undefined

Если я присвоил это значение переменной, эта переменная покажет, что стек не определен.

Интересно, что работает new Error().stack создает сообщение с надлежащим стеком.

В идеале эти ошибки имели бы стеки по умолчанию, поэтому при входе в систему я могу знать, где искать.

Я не понимаю, почему это происходит и не может найти информацию об этом. Здесь что-то не хватает?

+1

Может быть, вы могли бы добавить код? Когда «new error()' [имеют] неопределенные стеки »? Не тогда, когда вы запускали 'new Error(). Stack', по-видимому. Что касается источников информации, если вы этого не видите, это хороший старт: «https://nodejs.org/api/errors.html». Надеюсь, это поможет. – BaldEagle

ответ

2

Поскольку The string representing the stack trace is lazily generated when the error.stack property is accessed

Небольшая иллюстрация:

function newError() { 

    var error = new Error('ohhh') 

    // See the contents of a _stack variable using the Inspector 
    var _stack = '' + error.stack 

} 

newError() 
+0

Но вопрос в том, почему ленивое поколение идет не так? При каких обстоятельствах он не генерирует стек вообще, хотя к нему обращаются? Ссылка здесь не очень помогает. Фрагмент кода также не помогает: он вычисляет 'undefined', потому что' newError' не имеет оператора 'return', а не из-за проблем с оценкой стека. –