Anda membangun aplikasi node.js dengan express v4.x lalu memulai aplikasi Anda dengan npm start . Pertanyaan saya adalah bagaimana cara menghentikan aplikasi? Apakah ada npm stop ?
EDIT untuk menyertakan kesalahan saat menerapkan npm stop
/home/nodetest2# npm stop
> nodetest2@0.0.1 stop /home/nodetest2
> pkill -s SIGINT nodetest2
pkill: invalid argument for option 's' -- SIGINT
npm ERR! nodetest2@0.0.1 stop: `pkill -s SIGINT nodetest2`
npm ERR! Exit status 2
--signal
. Gunakanman pkill
untuk membaca tentang pkill.Semua solusi lain di sini bergantung pada OS. Solusi independen untuk OS apa pun menggunakan socket.io sebagai berikut.
package.json
memiliki dua skrip:server.js - Barang ekspres Anda yang biasa ada di sini
server.stop.js
Ujilah
npm start
(untuk memulai server Anda seperti biasa)npm stop
(ini sekarang akan menghentikan server Anda yang sedang berjalan)Kode di atas belum diuji (ini adalah versi potongan dari kode saya, kode saya berfungsi) tetapi semoga berfungsi sebagaimana mestinya. Either way, ini memberikan arahan umum yang harus diambil jika Anda ingin menggunakan socket.io untuk menghentikan server Anda.
sumber
Ketika saya mencoba solusi yang disarankan, saya menyadari bahwa nama aplikasi saya terpotong. Saya membaca
process.title
di dokumentasi nodejs ( https://nodejs.org/docs/latest/api/process.html#process_process_title ) dan dikatakanAplikasi saya tidak menggunakan argumen apa pun, jadi saya dapat menambahkan baris kode ini ke file
app.js
dan kemudian tambahkan beberapa baris ini ke
package.json
file sayauntuk menggunakan nama proses yang sangat panjang.
npm start
dannpm stop
bekerja, tentu sajanpm stop
akan selalu menghentikan semua proses yang berjalan, tetapi tidak masalah bagi saya.sumber
Ini adalah masalah versi mintty atau gunakan cmd. Untuk menghentikan proses server cukup jalankan perintah ini:
sumber
Di MAC OS X (/ BSD): Anda dapat mencoba menggunakan perintah lsof (daftar file yang terbuka)
sehingga
sumber
Periksa dengan netstat -nptl semua proses
Dan itu hanya membunuh proses dengan referensi PID .... Dalam kasus saya, saya ingin menghentikan 6231 / nodejs jadi saya menjalankan perintah berikut:
sumber
Berikut solusi lain yang mencampurkan ide dari jawaban sebelumnya. Dibutuhkan pendekatan "proses pembunuhan" sambil menangani kekhawatiran tentang kemandirian platform.
Ini bergantung pada paket penghentian pohon untuk menangani pembunuhan pohon proses server. Saya merasa perlu membunuh seluruh pohon proses dalam proyek saya karena beberapa alat (misalnya
babel-node
) menelurkan proses anak. Jika Anda hanya perlu mematikan satu proses, Anda dapat mengganti tree-kill denganprocess.kill()
metode bawaan.Solusinya mengikuti (dua argumen pertama yang
spawn()
harus dimodifikasi untuk mencerminkan resep khusus untuk menjalankan server Anda):build / start-server.js
build / stop-server.js
package.json
Perhatikan bahwa solusi ini melepaskan skrip mulai dari server (yaitu
npm start
akan segera kembali dan tidak memblokir hingga server dihentikan). Jika Anda lebih suka perilaku pemblokiran tradisional, cukup hapusoptions.detached
argumen kespawn()
dan panggilan kechild.unref()
.sumber
Jika Anda sudah mencoba
ctrl + c
dan masih tidak berhasil, Anda mungkin ingin mencobanya. Ini berhasil untuk saya.Jalankan baris perintah sebagai Administrator. Kemudian jalankan perintah di bawah ini untuk menemukan processID (PID) yang ingin Anda matikan. Ketik nomor port Anda
<yourPortNumber>
netstat -ano | findstr :<yourPortNumber>
Kemudian Anda menjalankan perintah ini setelah Anda mengidentifikasi PID.
taskkill /PID <typeYourPIDhere> /F
Kudos untuk @mit $ ingh dari http://www.callstack.in/tech/blog/windows-kill-process-by-port-number-157
sumber
Jika sangat sederhana, matikan saja prosesnya ..
sumber
Untuk mesin windows (saya di windows 10), jika CTRL + C (Cancel / Abort) Command di cli tidak berfungsi, dan layar akan muncul seperti ini:
Cobalah untuk menekan ENTER terlebih dahulu (atau tombol apa saja akan melakukannya) lalu CTRL + C dan proses saat ini akan menanyakan apakah Anda ingin menghentikan pekerjaan batch:
Mungkin CTRL + C hanya menghentikan proses induk sementara npm mulai berjalan dengan proses anak lainnya. Cukup tidak yakin mengapa Anda harus menekan tombol ekstra itu sebelum CTRL + C, tetapi ini bekerja lebih baik daripada harus menutup baris perintah dan memulai lagi.
Masalah terkait yang mungkin ingin Anda periksa: https://github.com/mysticatea/npm-run-all/issues/74
sumber
Untuk lingkungan produksi, Anda harus menggunakan Forever.js
Ini sangat berguna untuk memulai dan menghentikan proses node, Anda dapat membuat daftar aplikasi yang berjalan juga.
https://github.com/foreverjs/forever
sumber
Anda bisa menggunakan pm2
https://pm2.keymetrics.io/docs/usage/quick-start/
setelah instalasi cukup ketik terminal
pm2 start app.js
lalupm2 stop 0
untuk menghentikan server Andasumber
Jika file json Anda tidak memiliki skrip untuk menghentikan aplikasi, opsi yang saya gunakan hanya dengan menekan ctrl + C pada cmd.
sumber
Semua (3) pelarutan adalah:
1- ctlr + C
2- Dalam file json ada skrip yang berhenti
"scripts": {"stop": "killall -SIGINT nama-bisa-bisa-as-selama-itu-perlu-untuk-menjadi"},
* daripada di perintah tulis // npm stop //
3- Mulai ulang pc
sumber
Anda harus menekan kombinasi ctrl + z OS saya adalah Ubuntu
sumber