Apakah ada yang tahu cara mencetak jejak stack di Node.js?
javascript
node.js
stack-trace
mike.toString
sumber
sumber
sys.puts(new Error().stack)
(setelah menambahkan modul sistem)'util'
.new Error().stack
, yang berfungsi jika Anda tidak ingin melibatkan konsol.trace
adalah ia menunjukkan garis / konteks saat ini juga yangstack
tidak. Info ada di objek kesalahan jika Anda ingin secara manual membuat garis itu, saya kira.Sekarang ada fungsi khusus pada konsol untuk itu:
sumber
console.trace()
.--stack_trace_limit=200
Seperti yang sudah dijawab, Anda cukup menggunakan perintah jejak :
Namun, jika Anda sampai pada pertanyaan ini dengan mencari tentang cara mencatat jejak stack pengecualian , Anda bisa mencatat objek Pengecualian.
Itu akan masuk:
Jika versi Node.js Anda <dari 6.0.0 , logging objek Pengecualian tidak akan cukup. Dalam hal ini, hanya akan mencetak:
Untuk versi Node <6, gunakan
console.error(e.stack)
sebagai ganticonsole.error(e)
untuk mencetak pesan kesalahan plus tumpukan penuh, seperti versi Node saat ini.Catatan: jika pengecualian dibuat sebagai string seperti
throw "myException"
, itu tidak mungkin untuk mengambil jejak tumpukan dan mencatate.stack
hasil tidak terdefinisi .Agar aman, Anda bisa menggunakan
dan itu akan bekerja untuk versi Node.js lama dan baru.
sumber
console.error(e)
mencetak semua yang ada die
objek, termasuke.stack
?Untuk mencetak stacktrace
Error
di konsol dengan cara yang lebih mudah dibaca:Contoh hasil:
sumber
Dengan modul Node yang tersedia, dimungkinkan untuk mendapatkan jejak tumpukan penuh dari Node (walaupun dengan penalti kinerja kecil): http://www.mattinsler.com/post/26396305882/announcing-longjohn-long-stack -traces-for-node-js
sumber
Coba Error.captureStackTrace (targetObject [, constructorOpt]) .
Fungsi
a
danb
ditangkap dalam tumpukan kesalahan dan disimpan dimyObj
.sumber
stack
properti, Anda harus memanggil ini jika Node> = 6:Error.captureStackTrace(error)
.Error.captureStackTrace
muncul di jejak tumpukan, Anda dapat menghilangkannya dengan meneruskannya sebagaiconstructorOpt
argumen.Untuk yang saya tahu mencetak jejak stack lengkap dalam nodejs tidak mungkin, Anda hanya dapat mencetak jejak stack "parsial", Anda tidak bisa melihat dari mana Anda berasal dari kode, hanya di mana Pengecualian terjadi. Itulah yang dijelaskan Ryan Dahl dalam video youtube ini. http://youtu.be/jo_B4LTHi3I pukul min 56:30 karena tepat. Semoga ini membantu
sumber
Jawaban @isaacs benar, tetapi jika Anda memerlukan tumpukan kesalahan yang lebih spesifik atau lebih bersih , Anda dapat menggunakan fungsi ini:
Fungsi ini terinspirasi langsung dari
console.trace
fungsi di NodeJS .Kode sumber: Versi terbaru atau versi lama .
sumber
err.stack
adalah jawaban yang lebih benar.Jika Anda hanya ingin mencatat jejak tumpukan kesalahan (dan bukan pesan kesalahan) Node 6 dan di atas secara otomatis menyertakan nama kesalahan dan pesan di dalam jejak tumpukan, yang sedikit mengganggu jika Anda ingin melakukan beberapa penanganan kesalahan khusus:
console.log(error.stack.replace(error.message, ''))
Pemecahan masalah ini hanya akan mencatat nama kesalahan dan jejak tumpukan (jadi Anda dapat, misalnya, memformat pesan kesalahan dan menampilkannya seperti yang Anda inginkan di tempat lain dalam kode Anda).
Contoh di atas hanya akan mencetak nama kesalahan diikuti oleh jejak tumpukan, misalnya:
Dari pada:
sumber
Jika seseorang masih mencari ini seperti saya, maka ada modul yang bisa kita gunakan disebut "stack-trace". Ini sangat populer. Tautan NPM
Lalu berjalanlah melewati jejak.
Atau cukup cetak jejak:
sumber
Anda dapat menggunakan modul node-stack-trace yang merupakan modul penuh daya untuk melacak tumpukan panggilan.
sumber