Apa perintah yang digunakan untuk keluar? (Yaitu menghentikan proses Node.js)
1868
Panggil metode process
objek global exit
:
process.exit()
process.exit ([kode])
Mengakhiri proses dengan yang ditentukan
code
. Jika dihilangkan, keluar menggunakan kode 'sukses'0
.Untuk keluar dengan kode 'gagal':
process.exit(1);
Shell yang mengeksekusi node harus melihat kode keluar sebagai
1
.
end()
meminta. Kalau tidak, itu hanya akan menggantung.exit
tidak menyesatkan sama sekali. Anda bingung tentang cara kerja Node. Pikirkan Node sebagai server itu sendiri. Itu tidak hanya dinyalakan sesuai kebutuhan, seperti PHP di dalam server web seperti Apache. Node bahkan tidak harus ada hubungannya dengan server web sama sekali! Ini hanya sebuah host untuk beberapa JavaScript, dengan beberapa perpustakaan bawaan yang bagus untuk melakukan hal-hal yang berguna.mod_php
atau menggunakan Apache. Anda dapat menerapkan kembali httpd di PHP seperti node jika Anda benar-benar ingin atau menggunakan pendekatan yang lebih waras / standar seperti FastCGI seperti yang Anda bisa dalam node.process.exit()
ini tidak dianjurkan , seperti yang dijelaskan dalam jawaban di bawah ini .Hanya catatan bahwa menggunakan
process.exit([number])
adalah tidak direkomendasikan praktek.sumber
process.exit()
dimaksudkan untuk.Dari dokumentasi resmi nodejs.org :
Mengakhiri proses dengan kode yang ditentukan. Jika dihilangkan, keluar menggunakan kode 'sukses' 0.
Untuk keluar dengan kode 'gagal':
sumber
code = 0; process.exit(code);
code
?process.exit()
tanpa parameter sebagai kode default ke 0process.exit(0);
dan menjalankannyanode exit_0.js && echo 'success'
akan mengatakan "berhasil". Jika Anda membuat exit_1.js denganprocess.exit(1);
dan menjalankannyanode exit_1.js && echo 'success'
tidak akan mengatakan "berhasil" karena proses Anda keluar dengan nol (yang menunjukkan "kegagalan" atau "keluar abnormal" ke shell). Selain itu, Anda akan melihat nilai yang berbeda$?
jika Anda menjalankannode exit_1.js
vsnode exit_0.js
(Anda dapat memeriksa dengan melakukannode exit_1.js
dan kemudian melakukanecho $?
).Jika Anda berada di terminal Unix atau baris perintah Windows dan ingin keluar dari Node REPL, ...
.exit
dan tekan Enter, atausumber
node
REPL, Ctrl + D untuk keluar adalah perilaku standar, jadi ini juga berfungsi pada Windows.Dari baris perintah,
.exit
itulah yang Anda inginkan:Ini didokumentasikan dalam dokumen REPL . REPL (Read-Eval-Print-Loop) adalah apa yang disebut baris perintah Node.
Dari program normal, gunakan
process.exit([code])
.sumber
Itu tergantung pada alasan mengapa Anda bersedia untuk keluar dari proses node.js, tetapi dalam hal apa pun
process.exit()
adalah opsi terakhir untuk dipertimbangkan . Kutipan dari dokumentasi:Mari kita bahas kemungkinan alasan mengapa Anda mungkin ingin keluar dari proses node.js dan mengapa Anda harus menghindari
process.exit()
:Kasus 1 - Eksekusi selesai (skrip baris perintah)
Jika skrip telah mencapai akhirnya dan penerjemah simpul tidak keluar, ini menunjukkan bahwa beberapa operasi async masih tertunda. Adalah salah untuk memaksakan penghentian proses
process.exit()
pada saat ini. Lebih baik untuk mencoba memahami apa yang menghalangi skrip Anda keluar dengan cara yang diharapkan . Dan ketika Anda menyelesaikan ini, Anda dapat menggunakanprocess.exitCode
untuk mengembalikan hasil apa pun ke proses panggilan.Kasus 2 - Pengakhiran karena sinyal eksternal (SIGINT / SIGTERM / lainnya)
Misalnya, jika Anda bersedia menutup aplikasi ekspres dengan anggun . Tidak seperti skrip baris perintah, aplikasi ekspres terus berjalan tanpa batas, menunggu permintaan baru.
process.exit()
akan menjadi opsi yang buruk di sini karena itu akan mengganggu semua permintaan yang ada di dalam pipa. Dan beberapa dari mereka mungkin non-idempoten (UPDATE, DELETE). Klien tidak akan pernah tahu apakah permintaan itu selesai atau tidak di sisi server dan itu mungkin menjadi alasan inkonsistensi data antara klien dan server. Satu-satunya solusi yang baik adalah memberi tahu server http untuk berhenti menerima permintaan baru dan menunggu yang menunggu selesai denganserver.close()
:Jika masih tidak keluar - lihat Kasus 1.
Kasus 3 - Kesalahan internal
Selalu lebih baik untuk
throw
kesalahan, Anda akan mendapatkan jejak stack dan pesan kesalahan yang diformat dengan baik. Kode tingkat atas selalu dapat memutuskan apakah mereka dapat menangani kesalahan (catch
) atau membiarkannya menghentikan proses. Di sisi lain,process.exit(1)
akan menghentikan proses secara diam-diam dan tidak akan ada kesempatan untuk pulih dari ini. Ini mungkin satu-satunya "manfaat" dariprocess.exit()
, Anda dapat yakin bahwa proses akan dihentikan.sumber
Process.exit()
Sepertinya berlebihan untuk sebagian besar aplikasi. Saya sedang mencari yang setara dengan fungsi die () php ... lebih seperti:throw new Error('die msg')
REPL (Baris Perintah)
Tekan
ctrl + c
dua kaliKetik
.exit
dan tekan enterFile Skrip
Node biasanya keluar dengan kode 0 saat tidak ada lagi operasi async yang tertunda.
process.exit(1)
harus digunakan untuk keluar dengan kode kegagalan. Ini akan memungkinkan kita untuk menyimpulkan bahwa simpul tidak menutup dengan anggun dan terpaksa menutup.Ada kode keluar lain seperti
3 - Kesalahan Parse JavaScript Internal (sangat jarang)
5 - Kesalahan fatal pada mesin javascript v8
9 - Argumen tidak valid
Untuk daftar lengkap, lihat kode keluar simpul
sumber
Saya memiliki aplikasi yang ingin saya:
Saya harus mengait
process.exit(code)
keexit
event handler, atau surat tidak akan dikirim karena meneleponprocess.exit(code)
langsung membunuh acara yang tidak sinkron.sumber
process.exitCode
untuk bekerja untuk saya dalam alat baris perintah yang saya bangun (diuji pada Node v4.3.0). Tapi saya tidak bisa bersikap seperti yang didokumentasikan. Ini sangat baik bisa menjadi kasus tepi dengancommander
- meskipun github.com/tj/commander.js/… membuat saya bertanya-tanya. Tidak yakin apakah ada orang lain di luar sana yang melihat masalah ini dengan Node 4, tetapi mendokumentasikannya untuk referensi mendatang.process.exitCode = 1
, proses keluar dengan kode 0.Seperti yang ditunjukkan @Dominic, melempar kesalahan yang tidak tertangkap adalah praktik yang lebih baik daripada memanggil process.exit ([kode]) :
process.exitCode = 1; throw new Error("my module xx condition failed");
sumber
Untuk keluar
Kode keluar yang berguna
sumber
Dari kode yang dapat Anda gunakan di
process.exit([errorcode])
mana[errorcode]
bilangan bulat opsional (0
adalah standar untuk menunjukkan keberhasilan).Jika Anda menggunakan Read Eval Print Loop (REPL) , Anda dapat menggunakan Ctrl+ D, atau mengetik
.exit
Atau, pada Windows atau Linux Anda dapat menggunakan Ctrl+ C, Ctrl+C
Pada Mac perintahnya adalah Ctrl+ Z, Ctrl+Z
sumber
node --version
v0.10.18
Tekan
Ctrl + C
dua kali atau.exit
.sumber
Saya bisa mendapatkan semua proses simpul saya untuk mati langsung dari Git Bash shell pada Windows 10 dengan mengetik
taskkill -F -IM node.exe
- ini mengakhiri semua proses simpul di komputer saya sekaligus. Saya menemukan saya juga bisa menggunakantaskkill //F //IM node.exe
. Tidak yakin mengapa baik-
dan//
bekerja dalam konteks ini. Semoga ini membantu!sumber
Karena proses adalah objek global, Anda tidak perlu mengimpor modul apa pun. Fungsi berikut keluar atau membunuh proses simpul saat ini.
sumber
Buka terminal baris perintah tempat aplikasi simpul berjalan dan tekan Ctrl + C
jika Anda ingin keluar dari aplikasi simpul js dari kode,
sumber
jika Anda ingin keluar dari aplikasi node js kemudian tulis
dalam kode Anda
sumber
Keluar di simpul js dilakukan dengan dua cara:
Bagaimana itu bekerja?
Jika Anda ingin memaksa loop eksekusi untuk menghentikan proses, Anda dapat menggunakan proses variabel global yang merupakan turunan dari EventEmitter . Jadi ketika Anda memanggil process.exit () Anda benar-benar memancarkan event keluar yang mengakhiri semua tugas dengan segera bahkan jika masih ada operasi asinkron yang belum dilakukan.
process.exit () mengambil kode keluar (Integer) sebagai parameter. Kode 0 adalah default dan ini berarti keluar dengan 'sukses'. Sedangkan kode 1 berarti keluar dengan 'gagal'.
sumber
Jika Anda berada di Windows, buka Task Manager, lalu buka Processes, cari proses yang disebut "node", lalu klik dengan tombol kanan mouse Anda dan kemudian klik opsi "End Process".
sumber
Anda dapat menggunakan fungsi process.exit ([code]) .
Jika Anda ingin keluar tanpa 'kegagalan', Anda menggunakan kode
0
:Untuk keluar dengan kode 'gagal'
1
Anda dapat menjalankan:Kode 'kegagalan' dari kegagalan khusus untuk aplikasi. Jadi, Anda dapat menggunakan konvensi Anda sendiri untuk itu.
sumber