Rumah > Artikel > hujung hadapan web > Ralat NodeJS mengendalikan amalan terbaik
NodeJS ialah persekitaran masa jalan JavaScript sisi pelayan sumber terbuka berdasarkan I/O tak segerak dipacu peristiwa. Kecekapan dan kebolehskalaannya menjadikan NodeJS sebagai teknologi pilihan untuk banyak aplikasi web peringkat perusahaan. Walau bagaimanapun, seperti semua perisian lain, aplikasi NodeJS tidak sepenuhnya kebal terhadap ralat dan pengecualian. Untuk meningkatkan keteguhan dan kebolehpercayaan kod anda, adalah sangat penting untuk mengendalikan ralat dengan betul.
Artikel ini bertujuan untuk menyediakan beberapa amalan terbaik untuk pengendalian ralat NodeJS bagi membantu pembangun memperbaiki secara asas cara mereka mengendalikan ralat.
1. Menggunakan objek Ralat
JavaScript menyediakan objek Ralat terbina dalam, yang merupakan cara standard untuk mewakili ralat masa jalan. Dalam NodeJS, pembangun boleh mencipta objek ralat tersuai mereka sendiri berdasarkan objek Ralat untuk lebih menyesuaikan diri dengan keperluan khusus aplikasi. Berikut ialah contoh mudah:
class DatabaseConnectionError extends Error { constructor(msg, userFriendlyMsg) { super(msg); this.userFriendlyMsg = userFriendlyMsg; this.name = this.constructor.name; Error.captureStackTrace(this, this.constructor); } }
Dalam contoh ini, kami memanjangkan objek Ralat terbina dalam NodeJS dan menambah atribut userFriendlyMsg untuk memberikan maklumat ralat mesra pengguna dan membebankan pembina untuk membenarkan Menyediakan maklumat ini secara telus semasa mencipta ralat.
2. Kendalikan pengecualian tak segerak dengan anggun
Memandangkan NodeJS ialah I/O tak segerak, kaedah pengendalian pengecualiannya berbeza daripada kod segerak tradisional. Oleh itu, pengendalian pengecualian dalam kod tak segerak memerlukan mengikut beberapa peraturan yang berbeza. Berikut ialah dua cara untuk mengendalikan pengecualian tak segerak dengan anggun:
Dalam NodeJS, fungsi panggil balik adalah teras penyelesaian terdorong peristiwa . Biasanya, fungsi panggil balik akan mengambil bentuk dua parameter (ralat, data), di mana parameter ralat mewakili ralat yang mungkin berlaku semasa operasi tak segerak, dan parameter data mewakili hasil operasi tak segerak.
Untuk mengendalikan pengecualian dalam fungsi panggil balik dengan anggun, kami mengesyorkan menggunakan corak panggil balik ralat pertama, iaitu, menghantar objek ralat dalam parameter pertama fungsi panggil balik. Sudah tentu, dalam beberapa kes, anda boleh menggunakan pernyataan cuba-tangkap untuk menangkap pengecualian dalam fungsi panggil balik, tetapi ini biasanya bukan amalan yang baik.
Berikut ialah contoh mudah:
function readFile(filePath, callback) { fs.readFile(filePath, (err, data) => { if (err) { callback(new Error(`Failed to read file: ${filePath}`)); } else { callback(null, data); } }); }
Dalam contoh ini, kami menyemak secara manual untuk ralat dalam fungsi panggil balik dan lulus objek ralat sebagai parameter pertama kepada panggilan balik.
Promise ialah cara yang lebih elegan untuk mengendalikan kod tak segerak dalam JavaScript moden. Dengan Promise, pengecualian yang mungkin berlaku dalam operasi tak segerak boleh dikendalikan dengan lebih semula jadi. Berikut ialah contoh mudah:
function readFilePromise(filePath) { return new Promise((resolve, reject) => { fs.readFile(filePath, (err, data) => { if (err) { reject(new Error(`Failed to read file: ${filePath}`)); } else { resolve(data); } }); }); }
Dalam contoh ini, kami menggunakan objek Promise untuk mengendalikan operasi membaca fail secara tidak segerak dan menggunakan kaedah tolak untuk menetapkan status Janji kepada "ditolak" dalam peristiwa pengecualian. Ambil perhatian bahawa setiap pautan dalam rantai pengendalian pengecualian Promise perlu memanggil kaedah tangkapan atau menggunakan kaedah Promise.allSettled() untuk memastikan tiada pengecualian diabaikan.
3. Tulis rekod log yang baik
Apabila ralat berlaku, pembalakan adalah tugas penting. Log boleh membantu kami mencari masalah dengan cepat, mencari punca ralat dan mencari penyelesaian yang sesuai.
Dalam NodeJS, pengelogan boleh menggunakan objek konsol terbina dalam, atau anda boleh menggunakan perpustakaan pengelogan pihak ketiga, seperti winston.js, bunyan, dsb.
Jika anda mempunyai berbilang kejadian NodeJS atau dijalankan pada berbilang pelayan, anda harus log ralat ke sistem pengelogan pusat seperti Elasticsearch, Graylog, Logstash, dsb.
4 Gunakan alat penyahpepijatan yang sesuai
Aplikasi pelayan yang besar seperti NodeJS boleh menjadi sangat rumit dan penyahpepijatan apabila ralat berlaku boleh menjadi rumit. Untuk menyahpepijat aplikasi NodeJS dengan lebih mudah, kami boleh menggunakan beberapa alat penyahpepijatan yang sesuai. Berikut ialah beberapa alatan penyahpepijatan yang biasa digunakan:
Penyahpepijat terbina dalam NodeJS ialah persekitaran REPL yang berjalan dalam proses NodeJS. Ia membantu kami dengan penyahpepijatan interaktif pada masa jalan, memeriksa pembolehubah, melaksanakan ungkapan, melangkah melalui kod dan banyak lagi.
Untuk mendayakan penyahpepijat terbina dalam NodeJS, gunakan baris arahan berikut:
node debug [app.js]
Alat Pembangun Chrome ialah pembangunan web Ia adalah salah satu alat penyahpepijatan yang biasa digunakan dan juga boleh digunakan untuk menyahpepijat aplikasi NodeJS. Untuk nyahpepijat aplikasi NodeJS menggunakan Alat Pembangun Chrome, gunakan baris arahan berikut:
node --inspect[=[host:port]] [app.js]
Kemudian, kita boleh membuka penyemak imbas Chrome dan melawati URL berikut:
chrome://inspect
Dalam pilihan "Sasaran Jauh " , cari aplikasi NodeJS kami dan klik butang "Periksa" untuk membuka alatan pembangun.
Ringkasan
Artikel ini memperkenalkan beberapa amalan terbaik untuk pengendalian ralat NodeJS, yang boleh membantu pembangun mengurus dan menyelesaikan ralat dalam aplikasi web dengan lebih baik. Dengan menggunakan objek Ralat, mengendalikan pengecualian tak segerak dengan anggun, menulis pengelogan yang baik dan menggunakan alat nyahpepijat yang sesuai, kami boleh mencari dan menyelesaikan masalah dengan cepat, dengan itu meningkatkan kebolehpercayaan dan keteguhan aplikasi kami.
Atas ialah kandungan terperinci Ralat NodeJS mengendalikan amalan terbaik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!