Comment sortir dans le noeud.js

Quelle est la commande qui est utilisée pour sortir? (j'.e résilier le Nœud.js processus)

1415
demandé sur K48 2011-03-11 00:30:05

16 réponses

Appel mondial process de l'objet exit la méthode:

process.exit()

à Partir de la documentation:

process.de sortie([code])

termine le processus avec le code spécifié . Si elle est omise, exit utilise le code "success" 0 .

pour sortir avec un code "échec":

process.exit(1);

le shell qui a exécuté le noeud doit voir le code de sortie comme 1.

1769
répondu pero 2016-02-29 19:32:19

du "officiel 151930920" nodejs.org documentation:

process.exit(code)

termine le processus avec le code spécifié. Si elle est omise, exit utilise le code "success" 0.

pour sortir avec un code "échec":

process.exit(1);
325
répondu alienhard 2015-07-24 14:51:06

si vous êtes dans un terminal Unix ou une ligne de commande Windows et que vous voulez quitter le noeud REPL, l'un ou l'autre...

  • presse Ctrl + c deux fois, ou
  • type .exit et appuyez sur Entrée, ou
  • appuyez sur Ctrl + D au début d'une ligne (Unix uniquement)
241
répondu Mohsen 2015-05-23 22:58:45

juste une note que l'utilisation de process.exit([number]) est non recommandé pratique.

la raison pour laquelle ceci est problématique est parce que écrit pour traiter.stdout dans Nœud.js ne sont pas bloquants et peuvent se produire sur plusieurs tiques de la Nœud.js boucle d'événements. Processus appelant.exit(), cependant, les forces de l' processus de sortie avant que ces Écritures supplémentaires à stdout peuvent être effectuer.

plutôt que d'appeler le processus.sortie() directement, le code devrait processus.exitCode et permettre au processus de sortir naturellement en évitant programmer tout travail supplémentaire pour la boucle de l'événement:

si vous pouvez, vous devriez définir le code de sortie et permettre au noeud de sortir avec élégance:

process.exitCode = 1;
194
répondu Dominic 2016-06-02 13:02:16

de la ligne de commande, .exit est ce que vous voulez:

$ node
> .exit
$

c'est documenté dans le REPL docs . REPL (Read-Eval-Print-Loop) est le nom de la ligne de commande du noeud.

D'un programme normal, utiliser process.exit([code]) .

111
répondu Mike M. Lin 2012-07-06 05:52:49

cela dépend de la raison pour laquelle vous êtes prêt à quitter le noeud.processus js, mais dans tous les cas process.exit() est la dernière option pour considérer . Une citation de la documentation:

Il est important de noter que l'appel process.exit() forcera l' processus pour sortir le plus rapidement possible, même s'Il ya encore opérations asynchrones en attente qui ne sont pas encore terminées, y compris les opérations D'E/S à process.stdout et process.stderr .

Dans la plupart des situations, il n'est pas nécessaire d'appeler process.exit() explicitement. nœud.le processus js se terminera tout seul. si il n'y a pas de travail supplémentaire en attente dans la boucle d'événements. Le La propriété process.exitCode peut être définie pour indiquer le processus de sortie code à utiliser lorsque le processus s'arrête normalement.

nous allons couvrir les raisons possibles pour lesquelles vous pourriez être prêt à quitter noeud.js processus et pourquoi vous devriez éviter process.exit() :

Cas 1 - l'Exécution complète (script de ligne de commande)

si le script a atteint sa fin et que l'interpréteur de noeuds ne sort pas, il indique que certaines opérations asynchrones sont toujours en attente. C'est mal de forcer la fin du processus avec process.exit() à ce point. Il est préférable d'essayer de comprendre ce qui empêche votre script de sortir de la manière attendue . Et quand vous réglez cela, vous pouvez utiliser process.exitCode retourne aucun résultat pour le processus appelant.

Case 2-terminaison due à un signal externe (SIGINT / SIGTERM / other)

par exemple, si vous êtes prêt à gracieusement fermer un express app. À la différence du script en ligne de commande, express app continue de tourner à l'infini, en attendant de nouvelles requêtes. process.exit() sera une mauvaise option, car il va interrompre toutes les demandes qui sont dans le pipeline. Et certains d'entre eux peuvent être non-idempotent (UPDATE, DELETE). Le Client ne saura jamais si ces requêtes sont complétées ou pas du côté du serveur et cela pourrait être la raison de l'incohérence des données entre le client et le serveur. La seule bonne solution est de dire au serveur http de cesser d'accepter de nouvelles requêtes et d'attendre que les requêtes en attente se terminent par 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");
   });
});

si elle ne sort toujours pas-voir Cas 1.

Cas 3 - erreur Interne

c'est toujours mieux vaut throw une erreur, vous obtiendrez un message de trace et d'erreur de pile joliment formaté. Les niveaux supérieurs de code peuvent toujours décider s'ils peuvent gérer l'erreur ( catch ) ou la laisser écraser le processus. De l'autre côté, process.exit(1) mettra fin au processus silencieusement et il n'y aura aucune chance de récupérer de cela. Il pourrait être le seul "avantage" de process.exit() , vous pouvez être sûr que le processus sera terminé.

55
répondu teq 2017-05-23 12:02:59

REPL (ligne de commande)

  • Appuyez sur ctrl + c deux fois

  • Type .exit et appuyez sur

Fichier De Script

process.exit(code)
Le noeud

sort normalement avec le code 0 lorsqu'il n'y a plus d'opérations asynchrones en attente.

process.exit(1) doit être utilisé pour sortir avec un code de défaillance.Cela nous permettra de déduire que le noeud ne s'est pas fermé avec élégance et a été forcé de le faire.

il y a d'autres codes de sortie comme

3 - erreur JavaScript interne (très très rare)

5 - erreur Fatale dans le moteur javascript v8

9-argument invalide

pour la liste complète voir sortie du noeud codes

22
répondu Siva Prakash 2017-02-06 17:38:45

j'ai une application que je voulais:

  1. Envoyer un courriel à l'utilisateur
  2. Sortie avec un code d'erreur

j'ai dû accrocher process.exit(code) à un gestionnaire d'événements exit , sinon le courrier ne sera pas envoyé car appeler process.exit(code) tue directement les événements asynchrones.

#!/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
répondu Stephen Quan 2015-02-09 05:36:16

du code vous pouvez utiliser process.exit([errorcode])[errorcode] est un entier optionnel ( 0 est la valeur par défaut pour indiquer le succès).

si vous utilisez le Lire Boucle D'impression Eval (REPL) , vous pouvez utiliser Ctrl + D , ou tapez .exit

alternativement, sur Windows ou Linux vous pouvez utiliser Ctrl + C , Ctrl + C

Sur Mac, la commande est Ctrl + Z , Ctrl + Z

6
répondu zzzzBov 2013-12-06 01:15:20

À la sortie

let exitCode = 1;
process.exit(exitCode)

Utile les codes de sortie

1 - Catchall for general errors
2 - Misuse of shell builtins (according to Bash documentation)
126 - Command invoked cannot execute
127 - “command not found”
128 - Invalid argument to exit
128+n - Fatal error signal “n”
130 - Script terminated by Control-C
255\* - Exit status out of range
6
répondu Denis Lisitskiy 2016-10-26 20:10:01

comme @Dominic l'a souligné, lancer une erreur non tirée est une meilleure pratique au lieu d'appeler processus.Sortie ([code]) :

process.exitCode = 1; throw new Error("my module xx condition failed");

5
répondu MANN 2016-06-10 01:05:06

Ligne De Commande

presse CTRL + C deux fois

ou

Type .exit et appuyez sur Entrée

Fichier De Script

process.exit(code)
3
répondu Farhan Yaseen 2018-03-09 12:29:59

j'ai été capable d'obtenir tous mes processus de noeud pour mourir directement du shell Bash Git sur Windows 10 en tapant taskkill -F -IM node.exe - cela met fin à tous les processus de noeud sur mon ordinateur à la fois. J'ai trouvé que je pouvais aussi utiliser taskkill //F //IM node.exe . Je ne sais pas pourquoi - et // fonctionnent dans ce contexte. Espérons que cette aide!

2
répondu Alison Stuart 2017-12-19 15:55:08

presse Ctrl + C deux fois ou .exit .

> 
(To exit, press ^C again or type .exit)
> 
2
répondu HeadAndTail 2018-07-23 18:05:18

si vous voulez sortir de l'application node js, alors écrivez

process.exit(1)

dans votre code

0
répondu Ajay Mudaliyar 2018-02-20 12:35:27

vous pouvez utiliser le procédé .de sortie([code]) de la fonction.

si vous voulez sortir sans 'échec', vous utilisez le code 0 :

process.exit(0);

pour sortir avec un code "echec " 1 vous pouvez exécuter:

process.exit(1);

le code "failure" de la défaillance est propre à la demande. Ainsi, vous pouvez utiliser vos propres conventions.

0
répondu Oleksii Trekhleb 2018-09-20 11:31:31