Dengan kesilapan senyap di sini saya maksudkan sebarang isu tidak menghasilkan sebarang petunjuk yang boleh dilihat.
Beberapa contoh yang paling biasa:
Mari kita fahami satu persatu secara terperinci dan cara menyahpepijatnya:
Ralat ini berlaku apabila anda terlepas melampirkan pengendali .catch() pada janji anda. Akibatnya apabila janji itu ditolak, ralat tidak muncul.
Anda boleh nyahpepijat ralat ini dengan menjalankan kod anda dengan hujah penolakan yang tidak dikendalikan. Ia memaksa nod untuk menamatkan proses pada penolakan janji yang tidak dikendalikan, menjadikan ralat itu jelas.
node --unhandled-rejections=strict script.js
Adakah anda terjumpa kod Node.js yang:
Jika ya, kemungkinan besar ia disebabkan oleh janji yang tidak dapat diselesaikan atau gelung tidak terhingga di suatu tempat.
Anda boleh mengesahkan isu dengan mengehadkan masa pelaksanaan skrip seperti yang dilakukan di bawah:
timeout 10s node script.js || echo "Warning: Unresolved promise or infinite loop detected"
Keadaan Perlumbaan Negeri Dikongsi berlaku apabila berbilang panggilan balik mengakses keadaan dikongsi secara serentak.
Disebabkan keadaan perlumbaan, program ini menghasilkan hasil yang tidak dapat diramalkan menyebabkan ketidakkonsistenan data tanpa gejala yang kelihatan semasa ujian.
Namun nasib baik nod sebenarnya menyediakan pilihan jejak-async-cangkuk untuk mengenal pasti corak pelaksanaan sedemikian.
node --trace-async-hooks script.js 2>&1 | grep "asyncId"
Akhirnya mari kita bercakap tentang ralat dalam pendengar acara.
Ini disebabkan oleh penolakan janji yang tidak dikendalikan dalam panggilan balik pendengar acara. Ini membawa kepada ralat yang tidak pernah disebarkan ke konteks pelaksanaan utama.
Anda boleh mengenal pasti ralat ini dengan mengubah hala semua log peristiwa nod ke penapis grep untuk menangkap ralat yang dipancarkan semasa pengendalian acara
node -r events script.js 2>&1 | grep "Error"
Dan itu sahaja.
Semoga anda mendapati arahan ini berguna semasa menyahpepijat ralat senyap dalam kod JavaScript.
Selain itu, komen di bawah ralat senyap manakah yang paling mengganggu anda?
Atas ialah kandungan terperinci memerintahkan untuk Nyahpepijat 'Ralat Senyap' dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!