2016-03-02 77 views
0

我正在使用節點檢查器,我注意到new Error()有未定義的堆棧。NodeJS錯誤堆棧未定義

如果我將這個值賦給一個變量,那個變量就會顯示堆棧未定義。

有趣的是,運行new Error().stack會生成一個帶有正確堆棧的消息。

理想情況下,這些錯誤默認會有堆棧,所以當我登錄時我可以知道去哪裏看。

我不明白爲什麼會發生這種情況,無法找到它的信息。有什麼我在這裏失蹤?

+1

也許,你能添加一些代碼?什麼時候「'新的錯誤()'[有]未定義的堆棧」?不是當你運行'Error 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'語句,不是因爲評估堆棧的問題。 –