Saya mencoba mencari sumber penolakan yang tidak ditangani dari Janji di Node.js
Saya sudah mencoba memutakhirkan ke Node versi 12, menggunakan --async-stack-traces
opsi, dan mendengarkannya menggunakan:
process.on("unhandledRejection",( reason, promise ) => {
console.log(reason);
console.log(promise);
});
Tapi saya masih tidak melihat jejak tumpukan membantu untuk membantu saya menemukan pelakunya!
UnhandledPromiseRejectionWarning: TypeError: Chaining cycle detected for promise #<Promise>
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:89675) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 11)
Menjalankan Node v10.10.0
javascript
node.js
promise
v8
d -_- b
sumber
sumber
const cyclic = Promise.resolve().then(()=>cyclic);
, jadi jangan mencari penolakan janji yang tidak tertangani, ini ada dalam kode internal node.npm i bluebird
dan menambahconst Promise = require('bluebird')
kode dapat memberikan Anda pesan kesalahan yang lebih rinci--trace-warnings
, penolakan tidak tertangani disertai dengan peringatan yang dapat Anda lacakJawaban:
Jika Anda melewatkan stacktrace yang bermanfaat, Anda bisa membuat simpul membuat yang baru dengan melemparkan kembali kesalahan Anda di handler Anda seperti ini:
Dengan cara ini, Anda harus dapat melacak pelakunya.
sumber
terima kasih untuk semua sarannya. Saya sudah mencoba sekali lagi dengan memutakhirkan ke Node terbaru
12.14.1
dan akhirnya bisa membuatnya menampilkan jejak stack:Saya digunakan
node --async-stack-traces myScript.js
bersama dengan:Dan itu melacak kesalahan.
sumber
Untuk menemukan beberapa jejak stack yang baik untuk kode ini
const cyclic = Promise.resolve().then(() => cyclic);
saya memasukkan kode ini ke dalam fileprromise_cycle.js
dan dijalankan dengan inspektur untuk men-debug itu.Saya debug di Chrome DevTools dengan bendera
Pause on caught exceptions
diaktifkan, dan kemudian saya bisa melihat jejak seluruh tumpukan dengan file saya di atasnyasumber