Cum pentru a ieși în Node.js

Care este comanda care este folosit pentru a ieși? (am.e rezilia Node.js proces)

Soluția

Suna la nivel mondial procesul obiect's exit metoda:

process.exit()

Din docs:

proces.de ieșire([cod])

se Încheie procesul cu un anumit "cod". Dacă este omis, ieșire folosește 'de succes' cod "0".

Pentru a ieși cu o 'eșec' cod:

proces.exit(1);

shell-ul care l-a executat nod ar trebui să vedeți codul de ieșire 1.

Comentarii (4)

De la oficial nodejs.org documentație:

process.exit(code)

Se termină procesul cu codul specificat. Dacă este omis, ieșire folosește 'de succes' cod 0.

Pentru a ieși cu o 'eșec' cod:

process.exit(1);
Comentarii (9)

Doar un rețineți că utilizarea de proces.de ieșire([numărul])` este recomandat practica.

proces de Asteptare.ieșire() va forța proces pentru a ieși cât mai repede posibil, chiar dacă există încă asincron operațiuni în curs de nu au fost încă finalizate complet, inclusiv operațiuni de I/O pentru a proces.stdout și de proces.stderr.

În cele mai multe situații, nu este de fapt necesar pentru a apela proces.ieșire() explicit. La Node.js procesul va ieși pe cont propriu dacă nu există nici o lucrare suplimentară în curs în cazul în buclă. La proces.exitCode proprietate poate fi setat pentru a spune procesul de ieșire care cod pentru a utiliza atunci când procesul ieșirile cu grație.

De exemplu, următorul exemplu ilustrează un abuz a proces.ieșire() metodă care ar putea duce la date tipărite la stdout fiind trunchiat și a pierdut:

// Acesta este un exemplu de ce nu - a face: dacă (someConditionNotMet()) { printUsageToStdout(); proces.exit(1); }

motivul pentru Care acest lucru este problematic este pentru că scrie la proces.stdout în Node.js sunt uneori asincron și poate să apară pe mai multe căpușe de Node.js bucla eveniment. Proces de asteptare.exit(), cu toate acestea, forțele de proces pentru a ieși înaintea celor suplimentare scrie la stdout poate fi efectuate.

mai Degrabă decât de asteptare proces.ieșire() direct, codul ar trebui să stabilească proces.exitCode și permite procesul de a ieși în mod natural, prin evitarea programarea orice lucrare suplimentară pentru bucla eveniment:

// Cum să setați corect codul de ieșire în timp ce permițându - // procesul ieși cu grație. dacă (someConditionNotMet()) { printUsageToStdout(); proces.exitCode = 1; }

Comentarii (17)

Daca're într-un terminal Unix sau Windows command line și vrei să ieși din Nod REPL, fie...

  • Apăsați Ctrl + C de două ori, sau
  • tip `.de ieșire și apăsați Enter, sau
  • apăsați Ctrl + : D la început de linie (Unix numai)
Comentarii (4)

Din linia de comandă, `.ieșire este ceea ce vrei:

$ node
> .exit
$

L's documentate în REPL docs. REPL (Read-Eval-Print-Bucla) este ceea ce Nod în linia de comandă se numește.

De la un program normal, utilizați proces.de ieșire([cod]).

Comentarii (0)

Depinde de motivul pentru care te're dispuși să ieși node.js procesul, dar, în orice caz, proces.ieșire() este ultima opțiune să ia în considerare. Un citat din documentație:

este important să rețineți că sun proces.ieșire() va forța proces pentru a ieși cât mai repede posibil, chiar dacă există încă operații asincrone în așteptare care nu au finalizat încă pe deplin, inclusiv operațiuni de I/O a proces.stdout " și " proces.stderr.

În cele mai multe situații, nu este de fapt necesar pentru a apela proces.ieșire() în mod explicit. La Node.js procesul va ieși pe l's propriu dacă nu există nici o lucrare suplimentară în curs în cazul în buclă. La `proces.exitCode de proprietate poate fi setat pentru a spune procesul de ieșire care cod pentru a utiliza atunci când procesul ieșirile cu grație.

Hai să acopere posibile motive pentru care ai putea fi dispus să ieși node.js proces și de ce ar trebui să evite proces.ieșire():

Cazul 1 - Executarea completă (script de linie de comandă)

Dacă script-ul a ajuns la sfârșitul său și nod interpret nu't de ieșire, se indică faptul că unele asincron operațiuni sunt încă în curs. E greșit pentru a forța terminarea procesului cu procesul.de ieșire (de) la acest punct. E mai bine să încercăm să înțelegem ce ține script-ul de la ieșirea de așteptat în way](https://stackoverflow.com/questions/26057328/node-js-inspect-whats-left-in-the-event-loop-thats-preventing-the-script-from). Și când te rezolva acest lucru, puteți utiliza `proces.exitCode să se întoarcă nici un rezultat pentru proces de asteptare.

Cazul 2 - Rezilierea pentru că de semnal extern (SIGINT/SIGTERM/altele)

De exemplu, dacă ești dispus să grațios închis un expres app. Spre deosebire de script de linie de comandă, express app continuă să funcționeze la infinit, de așteptare pentru noi cereri. proces.ieșire() va fi o opțiune de rău aici, pentru că va întrerupe toate cererile care sunt în conducte. Și unele dintre ele ar putea fi non-idempotent (UPDATE, DELETE). Clientul nu va ști niciodată dacă aceste cereri sunt completate sau nu pe partea de server și acesta ar putea fi motivul de incoerență date între client și server. Singura soluție bună este de a spune server http pentru a opri acceptarea de noi cereri și așteptați pentru cele în curs de a termina cu serverul.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");
   });
});

Dacă încă nu't exit - a se vedea Cazul 1.

Cazul 3 - eroare Internă

L's întotdeauna mai bine pentru a "arunca" o eroare, veți obține un frumos formatate stivei și un mesaj de eroare. Nivelurile superioare de cod poate decide întotdeauna dacă se poate ocupa de eroare ("prinde") sau să-l bloca procesul. Pe de altă parte, procesul.exit(1)se va termina procesul în tăcere și nu va fi nici o șansă de a recupera de la aceasta. Ar putea fi singurul "beneficiu" alproces.ieșire()`, puteți fi sigur că procesul va fi reziliat.

Comentarii (2)

REPL(Linie de Comandă)

  • Apăsați ctrl + c` *de două ori ***

  • Tip `.de ieșire și apăsați pe enter

Fișier Script

process.exit(code)

Nod în mod normal, ieșirile cu cod 0 atunci când nu mai asincron operațiuni sunt în curs.

proces.exit(1) ar trebui să fie utilizate pentru a ieși cu un cod de eroare.Acest lucru ne va permite să se deducă faptul că nodul n't de aproape grațios și a fost forțat să închidă.

Există și alte coduri de ieșire ca

3 - Interne JavaScript Parse Error ( foarte foarte rar)

5 - eroare Fatală în v8 motor javascript

9 - Invalid argument

Pentru lista completă, consultați nod de ieșire coduri

Comentarii (0)

Am o aplicație pe care am vrut să:

  1. Trimite un e-mail pentru utilizator
  2. Ieșire cu un cod de eroare

A trebuit să cârlig de proces.de ieșire(cod)a o "ieșire" handler de eveniment, sau e-mail nu va fi trimis de asteptareproces.de ieșire(cod)` direct ucide evenimente asincrone.

#!/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); });
Comentarii (3)

Ca @Dominic a subliniat, arunca o eroare necunoscută este o practică bună în loc de asteptare proces.de ieșire([cod]): proces.exitCode = 1; throw new Error("modulul xx condiție nu a reușit");

Comentarii (3)

Pentru a ieși

let exitCode = 1;
process.exit(exitCode)

Utile coduri de ieșire

1 - Sublinia generalul erori
2 - Abuzul de coajă builtins (conform Bash documentația)
126 - Comanda invocat nu poate executa
127 - "command not found"
128 - Invalid argument pentru a ieși
128+n - eroare Fatală semnal "n"
130 - Script reziliat de Control-C
255\* - stare de Iesire din gama
Comentarii (1)

Apăsați Ctrl + Cde două ori sau.exit `.

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

De cod puteți utiliza proces.de ieșire([errorcode]) unde [errorcode] este opțional, un număr întreg (0 este implicit pentru a indica succesul).

Daca're folosind Citeste Eval Imprimare Buclă (DEC), puteți utiliza Ctrl + : D, sau de tip `.ieșire

Alternativ, pe Windows sau Linux, puteți utiliza Ctrl + C, Ctrl + C

Pe Mac comanda este Ctrl + Z, Ctrl + Z

Comentarii (1)

Am fost capabil de a obține toate nodul meu procese să moară direct de la Git Bash shell pe Windows 10 prin tastarea taskkill -F -IM node.exe - asta se termină toate nodul procesele de pe computer la o dată. Am găsit-am putea folosi, de asemenea, taskkill /F ///IM node.exe. Nu știu de ce atât - și // lucreze în acest context. Sper că acest lucru vă ajută!

Comentarii (0)

Deschide terminal de linie de comandă în cazul în care nodul se execută cererea și apăsați Ctrl + C,

dacă vrei să ieși dintr-un nod js cerere de cod, `` proces.exit(); // grațios încetarea proces.exit(1); // non grațios încetarea

Comentarii (0)

Ca proces este obiect global, nu't nevoie pentru a importa orice modul. Următoarea funcție ieșiri sau ucide nodul curent proces.

proces.de ieșire(cod)

proces.ucide(proces.pid)

proces.abort()

Comentarii (0)

dacă doriți să ieșiți din nod cerere js apoi scrie

process.exit(1)

în codul dvs.

Comentarii (1)

Ieșirea în nodul js se face în două moduri:

  • De asteptare proces.ieșire() în mod explicit.
  • Sau, dacă nodejs bucla eveniment se face cu toate sarcinile, și nu este nimic de făcut. Apoi, nodul aplicație va ieși automat.

Cum funcționează?

Dacă doriți să forțeze execuția buclei pentru a opri procesul, yo pot folosi variabile globale proces care este un exemplu de EventEmitter. Deci, atunci când apelați proces.ieșire() de fapt emit ieșire cazul în care se termină toate sarcinile imediat, chiar dacă încă mai există operații asincrone nu s-a făcut.

procesul de.ieșire() nevoie de un cod de ieșire (număr Întreg) ca un parametru. Codul 0 este implicit și acest lucru înseamnă că ieși cu un 'de succes'. În timp ce codul 1 înseamnă că ieși cu un 'eșec'.

Comentarii (0)

Puteți utiliza procesul.de ieșire([cod]) funcție.

Dacă doriți să ieșiți fără o 'eșec', puteți folosi codul 0:

process.exit(0);

Pentru a ieși cu o 'eșec' cod 1 s-ar putea rula:

process.exit(1);

Ca 'eșec' codul de eșec este specifică aplicației. Astfel se poate folosi propriile convenții pentru ea.

Comentarii (0)