Comment quitter un programme Node.js

Apprenez à mettre fin à une application Node.js de la meilleure façon possible

Il existe différentes manières de mettre fin à une application Node.js.

Lorsque vous exécutez un programme dans la console, vous pouvez le fermer avecctrl-C, mais ce que je veux discuter ici, c'est la sortie programmatique.

Commençons par le plus radical et voyons pourquoi vous êtes mieuxne pasEn l'utilisant.

LeprocessLe module principal fournit une méthode pratique qui vous permet de quitter par programme un programme Node.js:process.exit().

Lorsque Node.js exécute cette ligne, le processus est immédiatement forcé de se terminer.

Cela signifie que tout rappel en attente, toute demande réseau en cours d'envoi, tout accès au système de fichiers ou tout processus d'écriture surstdoutoustderr- tout va être interrompu sans grâce.

Si cela vous convient, vous pouvez transmettre un entier qui signale au système d'exploitation le code de sortie:

process.exit(1)

Par défaut, le code de sortie est0, ce qui signifie succès. Différents codes de sortie ont une signification différente, que vous voudrez peut-être utiliser dans votre propre système pour que le programme communique avec d'autres programmes.

Vous pouvez en savoir plus sur les codes de sortie àhttps://nodejs.org/api/process.html#process_exit_codes

Vous pouvez également définir leprocess.exitCodebiens:

process.exitCode = 1

et lorsque le programme se terminera plus tard, Node retournera ce code de sortie.

Un programme se terminera normalement lorsque tout le traitement sera terminé.

Plusieurs fois avec Node, nous démarrons des serveurs, comme ce serveur HTTP:

const express = require('express')
const app = express()

app.get(’/’, (req, res) => { res.send(‘Hi!’) })

app.listen(3000, () => console.log(‘Server ready’))

Ce programme ne se terminera jamais. Si vous appelezprocess.exit(), toute demande en cours ou en cours d’exécution va être abandonnée. C'estpas gentil.

Dans ce cas, vous devez envoyer à la commande un signal SIGTERM et le gérer avec le gestionnaire de signal de processus:

Noter:processne nécessite pas de «obligatoire», il est automatiquement disponible.

const express = require('express')

const app = express()

app.get(’/’, (req, res) => { res.send(‘Hi!’) })

const server = app.listen(3000, () => console.log(‘Server ready’))

process.on(‘SIGTERM’, () => { server.close(() => { console.log(‘Process terminated’) }) })

Que sont les signaux? Les signaux sont un système d'intercommunication POSIX: une notification envoyée à un processus afin de le notifier d'un événement survenu.

SIGKILLsont les signaux qui indiquent à un processus de se terminer immédiatement, et agiraient idéalement commeprocess.exit().

SIGTERMsont les signaux qui indiquent à un processus de se terminer correctement. C'est le signal envoyé par les gestionnaires de processus commeupstartousupervisordet plein d'autres.

Vous pouvez envoyer ce signal depuis l'intérieur du programme, dans une autre fonction:

process.kill(process.pid, 'SIGTERM')

Ou à partir d'un autre programme en cours d'exécution Node.js, ou de toute autre application en cours d'exécution dans votre système qui connaît le PID du processus que vous souhaitez terminer.

Téléchargez mon gratuitManuel de Node.js


Plus de didacticiels sur les nœuds: