Bagaimana untuk keluar di Node.js

Apa perintah yang digunakan untuk keluar? (saya.e mengakhiri Node.js proses)

Larutan

Panggilan global proses objek's keluar metode:

process.exit()

Dari docs:

proses.keluar([kode])

Berakhir dengan proses tertentu kode. Jika dihilangkan, keluar menggunakan 'sukses' kode 0.

Untuk keluar dengan 'gagal' kode:

proses.exit(1);

shell yang dieksekusi node harus melihat keluar kode seperti 1.

Komentar (4)

Dari situs resmi nodejs.org dokumentasi:

process.exit(code)

Mengakhiri proses dengan kode tertentu. Jika dihilangkan, keluar menggunakan 'sukses' kode 0.

Untuk keluar dengan 'gagal' kode:

process.exit(1);
Komentar (9)

Hanya sebuah catatan yang menggunakan proses.keluar([jumlah]) adalah tidak disarankan praktek.

Memanggil proses.exit() akan memaksa proses untuk keluar secepat mungkin bahkan jika masih ada operasi asynchronous yang tertunda belum selesai sepenuhnya, termasuk operasi I/O untuk proses.stdout dan proses.stderr.

Dalam kebanyakan situasi, itu tidak benar-benar perlu untuk memanggil proses.exit() secara eksplisit. Yang Node.js proses akan keluar sendiri jika tidak ada tambahan pekerjaan yang tertunda dalam acara loop. Yang proses.exitCode properti yang dapat diatur untuk memberitahu proses yang keluar kode untuk digunakan saat proses keluar dengan anggun.

Untuk contoh, contoh berikut mengilustrasikan penyalahgunaan dari proses.exit() metode yang dapat menyebabkan data yang dicetak ke stdout menjadi terpotong dan hilang:

// Ini adalah contoh dari apa yang tidak yang harus dilakukan: jika (someConditionNotMet()) { printUsageToStdout(); proses.exit(1); }

alasan ini bermasalah karena menulis untuk proses.stdout di Node.js yang kadang-kadang asynchronous dan dapat terjadi selama beberapa kutu dari Node.js acara loop. Pemanggilan proses.exit(), namun, pasukan proses untuk keluar sebelum tambahan tersebut menulis ke stdout dapat dilakukan.

daripada menelepon proses.exit() secara langsung, kode harus mengatur proses.exitCode dan memungkinkan proses untuk keluar secara alami dengan menghindari penjadwalan pekerjaan tambahan untuk event loop:

// Cara untuk benar mengatur kode keluar sementara membiarkan // proses keluar dengan anggun. jika (someConditionNotMet()) { printUsageToStdout(); proses.exitCode = 1; }

Komentar (17)

Jika anda're di terminal Unix atau Windows command line dan ingin keluar dari Node REPL, baik...

  • Tekan Pilih + C dua kali, atau
  • ketik .exit dan tekan Enter, atau
  • tekan Pilih + A di awal baris (Unix saja)
Komentar (4)

Dari baris perintah, .keluar adalah apa yang anda inginkan:

$ node
> .exit
$

It's didokumentasikan dalam REPL docs. REPL (Read-Eval-Print-Loop) adalah apa Node baris perintah disebut.

Dari program yang normal, gunakan proses'.keluar([kode]).

Komentar (0)

Hal ini tergantung pada alasan mengapa anda're bersedia untuk keluar node.js proses, tetapi dalam hal apapun proses.exit() adalah pilihan terakhir untuk mempertimbangkan. Kutipan dari dokumentasi:

Hal ini penting untuk dicatat bahwa panggilan proses.exit() akan memaksa proses untuk keluar secepat mungkin, bahkan jika masih ada operasi asynchronous pending yang belum selesai sepenuhnya, termasuk operasi I/O untuk proses.stdout dan proses.stderr.

Dalam kebanyakan situasi, itu tidak benar-benar perlu untuk memanggil proses.exit() secara eksplisit. Yang Node.js proses akan keluar pada itu's sendiri jika tidak ada tambahan pekerjaan yang tertunda dalam acara loop. Yang proses.exitCode properti yang dapat diatur untuk memberitahu proses yang keluar kode untuk digunakan saat proses keluar dengan anggun.

Mari kita tutup kemungkinan alasan mengapa anda mungkin bersedia untuk keluar node.js proses dan mengapa anda harus menghindari proses.exit():

Kasus 1 - Eksekusi lengkap (naskah baris perintah)

Jika naskah telah mencapai akhir dan node penerjemah doesn't keluar, hal ini menunjukkan bahwa beberapa operasi async yang masih tertunda. Itu salah untuk memaksa penghentian proses dengan proses.exit() pada saat ini. Itu lebih baik untuk mencoba memahami apa yang sedang memegang naskah anda dari keluar di harapkan way. Dan ketika anda menyelesaikan ini, anda dapat menggunakan proses.exitCode kembali ke semua hasil untuk memanggil proses.

Kasus 2 - Penghentian karena eksternal sinyal (SIGINT/SIGTERM/lainnya)

Misalnya, jika anda bersedia untuk anggun menutup aplikasi express app. Tidak seperti script baris perintah, aplikasi express terus berjalan jauh, menunggu permintaan baru. proses.exit() akan menjadi pilihan yang buruk di sini karena itu akan mengganggu semua permintaan yang ada di dalam pipa. Dan beberapa dari mereka mungkin menjadi non-idempotent (UPDATE, DELETE). Klien tidak akan pernah tahu jika permintaan tersebut selesai atau tidak pada sisi server dan mungkin itu yang menjadi alasan dari terjadinya inkonsistensi data antara klien dan server. Satu-satunya solusi yang baik adalah untuk memberitahu server http untuk berhenti menerima permintaan baru dan menunggu untuk menunggu orang-orang untuk menyelesaikan dengan server.close():

var express = require('express');
var app = express();
var server = app.listen(80);

process.on( 'SIGTERM', function () {
   server.close(function () {
     console.log("Finished all requests");
   });
});

Jika masih tidak't keluar seperti Kasus 1.

Kasus 3 - kesalahan Internal

It's selalu lebih baik untuk membuang kesalahan, anda akan mendapatkan baik diformat jejak stack dan pesan kesalahan. Tingkat atas dari kode selalu dapat memutuskan apakah mereka dapat menangani error (menangkap) atau biarkan kecelakaan proses. Di sisi lain, proses.exit(1) akan menghentikan proses diam-diam dan tidak akan ada kesempatan untuk pulih dari ini. Itu mungkin menjadi satu-satunya "manfaat" dari proses.exit(), anda dapat yakin bahwa proses akan dihentikan.

Komentar (2)

REPL(Baris Perintah)

  • Tekan ctrl + c dua kali

  • Type .exit dan tekan enter

File Skrip

process.exit(code)

Node biasanya keluar dengan kode 0 ketika tidak ada lagi async operasi yang tertunda.

proses.exit(1) harus digunakan untuk keluar dengan kode kegagalan.Ini akan memungkinkan kita untuk menyimpulkan bahwa node didn't dekat dengan anggun dan dipaksa untuk menutup.

Ada yang lain keluar kode seperti

3 - Internal JavaScript Parse Error ( sangat langka)

5 - kesalahan Fatal dalam v8 javascript engine

9 - argumen tidak Valid

Untuk daftar lengkap lihat node keluar kode

Komentar (0)

Saya memiliki aplikasi yang saya ingin:

  1. Kirim email ke pengguna
  2. Keluar dengan kode kesalahan

Aku harus kail proses.keluar(code) untuk keluar event handler, atau email tidak akan dikirim sejak memanggil proses.keluar(code) langsung membunuh asynchronous acara.

#!/usr/bin/nodejs
var mailer = require('nodemailer');
var transport = mailer.createTransport();
mail = {
  to: 'Dave Bowman',
  from: 'HAL 9000',
  subject: 'Sorry Dave',
  html: 'Im sorry, Dave. Im afraid I cant do THAT.'
}
transport.sendMail(mail);
//process.exit(1);
process.on('exit', function() { process.exit(1); });
Komentar (3)

Seperti @Dominic mencontohkan, melemparkan tertangkap error adalah praktek yang lebih baik daripada menelepon proses.keluar([kode]): proses.exitCode = 1; melempar Kesalahan baru("saya modul xx kondisi gagal");

Komentar (3)

Untuk keluar

let exitCode = 1;
process.exit(exitCode)

Berguna keluar kode

1 - Catchall untuk kesalahan umum
2 - Penyalahgunaan shell builtins (menurut Bash dokumentasi)
126 - Perintah dijalankan tidak dapat menjalankan
127 - "command not found"
128 - argumen tidak Valid untuk keluar
128+n - kesalahan Fatal sinyal "n"
130 - Naskah dihentikan oleh Control-C
255\* - status Keluar dari jangkauan
Komentar (1)

Tekan Ctrl + C dua kali atau .exit.

> 
(To exit, press ^C again or type .exit)
> 
Komentar (0)

Dari kode anda dapat menggunakan proses.keluar([errorcode]) di mana [errorcode] adalah opsional integer (0 adalah default untuk menunjukkan keberhasilan).

Jika anda're menggunakan Baca Eval Cetak Loop (REPL), anda dapat menggunakan Pilih + A, atau jenis .exit

Selain itu, pada Windows atau Linux, anda dapat menggunakan Pilih + C, Pilih + C

Pada Mac perintah Pilih + Z, Pilih + Z

Komentar (1)

Aku bisa mendapatkan semua simpul saya proses untuk mati langsung dari Git Bash shell pada Windows 10 dengan mengetik taskkill -F -IM node.exe - ini berakhir semua node proses pada komputer saya sekaligus. Ternyata aku bisa juga menggunakan taskkill /F ///IM node.exe. Tidak yakin mengapa kedua - dan // bekerja dalam konteks ini. Harap ini membantu!

Komentar (0)

Buka command line terminal di mana node menjalankan aplikasi dan tekan Ctrl + C

jika anda ingin keluar dari node js aplikasi dari kode, `` proses.exit(); // anggun penghentian proses.exit(1); // non anggun penghentian

Komentar (0)

Sebagai proses global objek, anda don't perlu mengimpor setiap modul. Berikut fungsi keluar atau membunuh node saat ini proses.

proses.keluar(kode)

proses.membunuh(proses.pid)

proses.abort()

Komentar (0)

jika anda ingin keluar dari aplikasi node js kemudian menulis

process.exit(1)

dalam kode anda

Komentar (1)

Keluar di node js dilakukan dalam dua cara:

  • Menelepon proses.exit() secara eksplisit.
  • Atau, jika nodejs loop acara ini dilakukan dengan semua tugas-tugas, dan tidak ada yang tersisa untuk dilakukan. Kemudian, simpul aplikasi akan secara otomatis keluar.

Bagaimana cara kerjanya?

Jika anda ingin memaksa eksekusi loop untuk menghentikan proses, yo dapat menggunakan variabel global proses yang merupakan contoh dari EventEmitter. Jadi, ketika anda menelepon proses.exit() anda benar-benar memancarkan exit acara yang berakhir semua tugas-tugas segera bahkan jika masih ada operasi asynchronous tidak pernah dilakukan.

proses.exit() mengambil kode keluar (Integer) sebagai parameter. Kode 0 adalah default dan ini berarti ia keluar dengan 'sukses'. Sementara kode 1 berarti itu keluar dengan 'gagal'.

Komentar (0)

Anda dapat menggunakan proses.keluar([kode]) fungsi.

Jika anda ingin keluar tanpa 'gagal', anda menggunakan kode 0:

process.exit(0);

Untuk keluar dengan 'gagal' kode 1, anda dapat menjalankan:

process.exit(1);

The 'gagal' kode kegagalan adalah spesifik untuk aplikasi. Jadi, anda dapat menggunakan anda sendiri konvensi untuk itu.

Komentar (0)