¿Cómo detener la ejecución de un script node.js?
exit (1)
Usar una return
es la forma correcta de detener la ejecución de una función. Tiene razón en ese process.exit()
eliminaría todo el proceso del nodo, en lugar de solo detener esa función individual. Incluso si está utilizando una función de devolución de llamada, desearía devolverla para detener la ejecución de la función.
ASIDE: la devolución de llamada estándar es una función en la que el primer argumento es un error, o nulo si no hubo ningún error, por lo que si estuviera utilizando una devolución de llamada, el aspecto anterior sería:
var thisIsTrue = false;
exports.test = function(request, response, cb){
if (thisIsTrue) {
response.send(''All is good!'');
cb(null, response)
} else {
response.send(''ERROR! ERROR!'');
return cb("THIS ISN''T TRUE!");
}
console.log(''I do not want this to happen. If there is an error.'');
}
Digamos que tengo este guión:
var thisIsTrue = false;
exports.test = function(request,response){
if(thisIsTrue){
response.send(''All is good!'');
}else{
response.send(''ERROR! ERROR!'');
// Stop script execution here.
}
console.log(''I do not want this to happen if there is an error.'');
}
Y como puede ver, me gustaría evitar que el script ejecute funciones posteriores si hay un error.
He logrado lograr esto añadiendo return;
después de que se envía la respuesta de error:
var thisIsTrue = false;
exports.test = function(request,response){
if(thisIsTrue){
response.send(''All is good!'');
}else{
response.send(''ERROR! ERROR!'');
return;
}
console.log(''I do not want this to happen if there is an error.'');
}
¿Pero es esa la forma ''correcta'' de hacer las cosas?
Alternativas
También he visto ejemplos que usan process.exit();
y process.exit(1);
, pero eso me da un error 502 Bad Gateway
(¿Supongo que porque mata el nodo?).
Y callback();
, lo que me acaba de dar un error ''indefinido''.
¿Cuál es la forma "correcta" de detener un script node.js en un punto dado y evitar que se ejecuten funciones posteriores?