Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Cara menutup aplikasi Node.js dengan anggun

Cara menutup aplikasi Node.js dengan anggun

PHPz
PHPzasal
2023-04-17 15:08:571185semak imbas

Node.js ialah persekitaran masa jalan merentas platform sumber terbuka. Ia membolehkan pembangun web baru membina aplikasi yang cekap menggunakan kod JavaScript mudah. Tetapi dalam pembangunan, anda perlu mempertimbangkan cara untuk menutup aplikasi Node.js anda dengan anggun. Dalam artikel ini, kita akan membincangkan cara menghentikan kod Node.js dengan anggun.

  1. Kekunci pintasan Ctrl+C
    Dalam tetingkap terminal, menekan gabungan kekunci Ctrl+C akan memaksa menutup aplikasi Node.js. Dalam persekitaran Linux dan Unix, kaedah ini adalah yang paling pantas dan paling biasa digunakan. Gabungan kekunci ini terikat pada pengurus proses Node.js dan boleh digunakan untuk menutup aplikasi dengan menekan Ctrl+C.
  2. Pengendali Isyarat
    Pengendali isyarat Node.js ialah satu lagi cara yang berkesan untuk menutup kod anda. Kaedah ini menggunakan kaedah terbina dalam objek proses untuk mendengar isyarat. Apabila isyarat ditangkap, kod boleh ditulis untuk bertindak balas kepadanya. Menggunakan pendekatan ini, isyarat boleh ditangkap dan dikendalikan, menghalang pengendali keluar Node.js lalai daripada menamatkan aplikasi.

Berikut ialah contoh yang menunjukkan cara untuk menyediakan pengendali Pengendali Isyarat:

function gracefulShutdown() {
  console.log("Node process stopping...");

  // 停止Web服务器
  server.close(() => console.log("HTTP server stopped"));

  // 关闭数据库连接
  mongoose.connection.close(() => console.log("MongoDB connection closed"));

  // 结束Node进程
  process.exit(0);
}

process.on("SIGTERM", gracefulShutdown);
process.on("SIGINT", gracefulShutdown);

Dalam coretan kod ini, gracefulShutdown akan dipanggil apabila isyarat SIGTERM dan SIGINT diterima fungsi untuk menyelesaikan operasi berikut:

  • Tutup pelayan HTTP.
  • Tutup sambungan pangkalan data MongoDB.
  • Tamatkan proses Node.js.
  1. Kaedah Process.exit()
    Dalam Node.js, jika anda ingin keluar dari aplikasi sepenuhnya, anda boleh menggunakan kaedah process.exit(0). Dalam kes ini, permohonan akan keluar tanpa memberikan sebarang petunjuk. Tetapi sila ambil perhatian bahawa kaedah ini bukanlah perhentian yang anggun.
  2. Menggunakan modul Node dan npm
    Modul Node.js dan npm direka khusus untuk melancarkan dan mengurus aplikasi Node.js. Menggunakan kaedah ini, anda perlu memasang aplikasi Node, yang akan menggunakan modul npm untuk mengendalikan kod yang menghentikan aplikasi. Pendekatan ini biasanya melibatkan amaran atau acara keluar untuk memastikan aplikasi berhenti dengan anggun.

Berikut ialah contoh penggunaan modul forever Node.js:

var forever = require("forever");

var child = new (forever.Monitor)("app.js", {
  max: 3, //最多重启3次
  silent: true, // 启动应用程序时,不显示输出到控制台的日志
  args: []
});

// 在关闭应用程序之前执行以下操作
child.on("exit", function() {
  console.log("App has stopped");
});

// 启动并监视应用程序
child.start();

Dalam coretan kod ini, modul forever boleh melancarkan dan memantau aplikasi Node.js. Jika memulakan semula aplikasi tidak berjaya selepas empat percubaan, aplikasi akan berhenti. Jika menggunakan kaedah ini, anda harus menghentikan modul forever pada penghujung untuk memastikan semua proses pada pelayan ditutup.

Kesimpulan

Dalam pembangunan aplikasi Node.js, menghentikan aplikasi dengan betul merupakan isu penting. Menutup aplikasi Node.js dengan anggun memastikan data dipelihara, semua sumber tidak terjejas dan menjalankan aplikasi lain tidak terjejas. Artikel ini menyediakan empat kaedah berbeza, termasuk menggunakan pintasan Ctrl + C, mencipta fungsi pemprosesan isyarat, menggunakan kaedah process.exit(0) dan menggunakan modul Node dan npm. Anda boleh memilih kaedah yang paling sesuai dengan keperluan anda untuk memastikan aplikasi Node.js anda berhenti dengan anggun.

Atas ialah kandungan terperinci Cara menutup aplikasi Node.js dengan anggun. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn