Node JS Applikationen werden gänzlich beendet, sobald ein nicht-abgefangener Fehler auftritt. Man kann dies durch einen Watchdog lösen, der die App immer wieder neu startet, wenn sie nicht mehr läuft. Habe heute aber noch eine andere Möglichkeit entdeckt: Fehler abfangen und sich selber neustarten.

Hier der Code dazu:

// Automatic Restart Process for Node
process.on(‘uncaughtException’, function(err) {
// Log the error
console.log(err);
// Name of the program to execute
var sExecute = “node app.js “;
//
var exec = require(‘child_process’).exec;
console.log(“restarting app”);
exec(sExecute);
});

Nun meint man, dass bei einem allg. Fehler beim ersten Programm-Aufruf diese Funktion gewissermassen rekursiv aufgerufen würde. Habe ich getestet mit NodeJS für Windows. Hat dort nur einmal neugestartet. Wenn man sicher gehen will, kann man diese Funktion auch erst aufrufen, sobald die Grundlogik einwandfrei funktioniert. D.h diese Funktion erst später aufzurufen, sobald die App gestartet hat, z.B. der Http-Server fehlerfrei initialisiert worden ist.

Das Ganze kann nützlich sein, um z.B. bei einem Node-Webserver ungeahnte Fehler abzufangen, die den Webserver ansonsten ausser Betrieb setzen würden.