Pertanyaan Bagaimana cara keluar di Node.js


Apa perintah yang digunakan untuk keluar? (mis. hentikan proses node.js)


1359
2018-03-10 21:30


asal


Jawaban:


Panggil global process objek exit metode:

process.exit()

Dari dokumen:

process.exit ([kode])

Akhiri proses dengan yang ditentukan code. Jika dihilangkan, exit menggunakan kode 'sukses' 0.

Untuk keluar dengan kode 'kegagalan':

process.exit(1);

Shell yang dieksekusi node harus melihat kode keluar sebagai 1.


1693
2018-03-10 21:36



Dari yang resmi nodejs.org dokumentasi:

process.exit(code)

Akhiri proses dengan kode yang ditentukan. Jika dihilangkan, exit menggunakan kode 'sukses' 0.

Untuk keluar dengan kode 'kegagalan':

process.exit(1);

320
2018-03-22 18:48



Jika Anda berada di terminal Unix atau baris perintah Windows dan ingin keluar dari REPL Node, baik ...

  • tekan Ctrl + C dua kali, atau
  • mengetik .exit dan tekan Enter, atau
  • tekan Ctrl + D di awal baris (hanya untuk Unix)

236
2018-06-02 13:02



Sekadar catatan yang menggunakan process.exit([number]) aku s tidak direkomendasikan praktek.

Alasan ini bermasalah adalah karena menulis ke proses.stdout in   Node.js adalah non-blocking dan dapat terjadi lebih dari beberapa tanda centang   Peristiwa loop Node.js. Memanggil process.exit (), bagaimanapun, memaksa   proses untuk keluar sebelum mereka menulis tambahan untuk stdout dapat   dilakukan.

Daripada memanggil process.exit () secara langsung, kode harus mengatur   process.exitCode dan biarkan proses untuk keluar secara alami dengan menghindari   menjadwalkan pekerjaan tambahan apa pun untuk perulangan acara:

Jika Anda bisa, Anda harus mengatur kode keluar dan memungkinkan Node untuk keluar dengan lancar:

process.exitCode = 1;

175
2017-07-06 05:52



Dari baris perintah, .exit adalah apa yang Anda inginkan:

$ node
> .exit
$

Ini didokumentasikan di Dokumen REPL. REPL (Read-Eval-Print-Loop) adalah apa baris perintah Node dipanggil.

Dari program normal, gunakan process.exit([code]).


109
2017-10-29 16:51



Itu tergantung pada alasan mengapa Anda bersedia keluar dari proses node.js, tetapi dalam hal apa pun process.exit() adalah pilihan terakhir untuk dipertimbangkan. Sebuah kutipan dari dokumentasi:

Penting untuk dicatat panggilan itu process.exit() akan memaksa   proses untuk keluar secepat mungkin meskipun masih ada   operasi asynchronous tertunda yang belum selesai sepenuhnya,   termasuk operasi I / O ke process.stdout dan process.stderr.

Dalam sebagian besar situasi, sebenarnya tidak perlu dipanggil    process.exit() secara eksplisit. Proses Node.js akan keluar dengan sendirinya   jika tidak ada pekerjaan tambahan yang tertunda di loop acara. Itu    process.exitCode properti dapat diatur untuk memberi tahu proses yang keluar   kode untuk digunakan saat proses keluar dengan lancar.

Mari kita tutupi kemungkinan alasan mengapa Anda mungkin bersedia keluar dari proses node.js dan mengapa Anda harus menghindarinya process.exit():

Kasus 1 - Eksekusi selesai (skrip baris perintah)

Jika skrip telah mencapai akhir dan interpreter simpul tidak keluar, ini menunjukkan bahwa beberapa operasi async masih tertunda. Ini salah untuk memaksa penghentian proses dengan process.exit() pada saat ini. Lebih baik mencoba memahami apa yang menahan skrip Anda dari keluar dengan cara yang diharapkan. Dan ketika Anda menyelesaikan ini, Anda dapat menggunakan process.exitCodeuntuk mengembalikan hasil apa pun ke proses pemanggilan.

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

Misalnya, jika Anda bersedia untuk menutup suatu situs web dengan anggun mengekspresikan aplikasi. Tidak seperti skrip baris perintah, aplikasi ekspres terus berjalan tanpa batas, menunggu permintaan baru. process.exit() akan menjadi opsi buruk di sini karena ini akan mengganggu semua permintaan yang sedang dalam jalur pipa. Dan beberapa dari mereka mungkin tidak idempoten (UPDATE, DELETE). Klien tidak akan pernah tahu apakah permintaan tersebut selesai atau tidak di sisi server dan mungkin alasan ketidakkonsistenan data antara klien dan server. Satu-satunya solusi yang baik adalah memberi tahu server http untuk berhenti menerima permintaan baru dan menunggu yang tertunda untuk menyelesaikannya 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 belum keluar - lihat Kasus 1.

Kasus 3 - Kesalahan internal

Itu selalu lebih baik throw kesalahan, Anda akan mendapatkan pesan tumpukan dan pesan kesalahan yang diformat dengan baik. Level kode atas selalu dapat memutuskan apakah mereka dapat menangani kesalahan (catch) atau biarkan prosesnya macet. 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" dari process.exit(), Anda dapat yakin bahwa proses akan dihentikan.


55
2018-02-06 17:38



REPL(Garis komando)

  • tekan ctrl + c  dua kali

  • Mengetik .exit dan tekan enter

File Skrip

process.exit(code)

Node biasanya keluar dengan kode 0 ketika 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 ditutup.

Ada kode keluar lain seperti

3 - Kesalahan Parse JavaScript Internal (sangat sangat jarang)

5 - Kesalahan fatal di mesin javascript v8

9 - Argumen tidak valid

Untuk daftar lengkap, lihat kode keluar simpul


22
2018-02-09 05:36



Saya memiliki aplikasi yang saya ingin:

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

Saya harus mengaitkan process.exit(code) ke sebuah exit pengendali event, atau yang lain surat tidak akan dikirim sejak menelepon process.exit(code) secara langsung membunuh kejadian tak sinkron.

#!/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 <B>THAT</B>.'
}
transport.sendMail(mail);
//process.exit(1);
process.on('exit', function() { process.exit(1); });

12
2017-12-06 01:15



Dari kode yang bisa Anda gunakan process.exit([errorcode]) dimana [errorcode] adalah bilangan bulat opsional (0 adalah standar untuk menunjukkan kesuksesan).

Jika Anda menggunakan Baca Eval Print Loop (REPL), Kamu dapat memakai Ctrl + D, atau ketik .exit

Atau, di Windows atau Linux Anda dapat menggunakan Ctrl + C, Ctrl + C

Pada Mac, perintahnya adalah Ctrl + Z, Ctrl + Z


6
2018-06-10 01:05