Cómo salir en Node.js

C

En este tutorial, le mostraremos las diversas formas de salir de los programas de Node.js. Primero debe comprender que Node.js funciona en un solo hilo o proceso principal. Puede generar procesos secundarios adicionales para manejar el trabajo adicional. Salir del proceso principal nos permite salir de Node.

Si bien hay muchas formas de salir de Node, algunas son mejores que otras para ciertas situaciones, como si está ejecutando un REPL o no. Explicaremos esto con más detalle a lo largo del artículo.

Dejar que un script salga implícitamente

Salir de un programa Node.js iniciado en la línea de comandos puede ser tan simple como esperar a que el script termine de ejecutarse. Implícitamente, el proceso de Node.js se cerrará cuando llegue al final del script.

Puede ver esto ejecutando el siguiente scipt:

// batman.js
console.log('Batman begins');

process.on('exit', function(code) {
    return console.log(`About to exit with code ${code}`);
});

Ejecute el programa con el comando node batman.js, y verá que genera la primera declaración sobre Batman. Además, se activa la devolución de llamada de “salida”, lo que da como resultado una impresión del mensaje sobre la salida y un código de salida. Debería ver algo similar a lo siguiente:

$ node batman.js 
Batman begins
About to exit with code 0

Tenga en cuenta que los eventos y bucles pendientes bloquearán la salida del programa. Agregue esta función de repetición al final del script anterior.

// batman.js

// ...

setInterval((function() {
    return console.log('I'm Batman!');
}), 1000);

Ejecútelo de nuevo. Esta vez, el programa no sale, porque la repetición setInterval La función bloquea la salida de Node.js. Su salida se verá similar a esto:

$ node batman.js 
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
...

Donde el “¡Soy Batman!” la frase se imprime continuamente hasta que sale con fuerza, como con Ctrl + Co cierra tu terminal.

Usando process.exit ()

Podemos salir de los programas de Node.js usando el explícito process.exit Llamada de función. los process.exit La función sale del proceso actual de Node.js. Toma un código de salida, que es un número entero.

los process object es una variable global que nos permite administrar el proceso actual de Node.js. Dado que es global, podemos acceder a él desde cualquier lugar dentro de un programa Node.js sin usar require para importarlo.

Actualicemos el último programa que no se cierra debido a la setInterval función. Esta vez, lo forzaremos a salir usando un timeout después de que hayan transcurrido 5 segundos. Agregue la siguiente función al mismo script ‘batman.js’ de antes.

// batman.js

// ...

setTimeout((function() {
    return process.exit(22);
}), 5000);

Cuando corres node batman.js, notará que esta vez, el programa se ejecuta por un tiempo limitado y luego sale con un código de salida de 22.

node batman.js 
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
I'm Batman!
About to exit with code 22

Utilizando process.exit funciona para salir del REPL (que veremos más adelante), así como para finalizar la ejecución de programas o scripts de Node.js.

Node.js interpreta códigos distintos de cero como falla y un código de salida de 0 como éxito.

Salir de Node.js usando process.kill ()

También podemos salir de Node.js usando process.kill para matar el proceso Node.js en ejecución. La diferencia entre esto y process.exit es eso process.kill toma el pid, o id de proceso, del proceso que queremos matar, así como una señal opcional que queremos enviar al proceso. Esto significa que podemos enviar señales para matar procesos que no sean el proceso principal de Node.js. Esto es útil en aplicaciones muy concurrentes con muchos procesos en ejecución.

Para matar el proceso principal de Node, simplemente pasamos el pid del proceso principal.

Para ver esto en funcionamiento, reemplace el setTimeout función en nuestro ejemplo de código anterior con esta versión que usa process.kill.

// batman.js

// ...

setTimeout((function() {
    return process.kill(process.pid);
}), 5000);

El programa sale según lo programado antes, después de que se imprimen algunas de las mismas declaraciones. Esta vez, el pid también se imprime en la consola (el tuyo puede ser diferente de 15):

$ node batman.js 
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
I'm Batman!
Terminated: 15

Este método también funciona en REPL y en los programas Node.js.

Cómo salir de Node.js usando process.abort

Asimismo, podemos utilizar process.abort para salir de Node.js. Este método funciona tanto en REPL como en scripts y aplicaciones.

La diferencia entre process.abort, process.killy process.exit es eso process.abort siempre sale de Node.js inmediatamente y genera un archivo principal. Además, no se ejecutarán devoluciones de llamada de eventos.

Nota: El archivo principal que se acaba de mencionar no se crea si ulimit -c se establece en 0. Ver este tutorial para más detalles.

Para verlo en acción, reemplace el process.kill llama a nuestro batman.js archivo con una llamada a process.abort y correr node batman.js.

// batman.js

// ...

setTimeout((function() {
    return process.abort();
}), 5000);

Cuando ejecuta el programa con node batman.js, el programa imprime las líneas como antes, pero sale después de que se agota el tiempo de espera, imprimiendo alguna información sobre el estado del programa cuando se abortó.

$ node batman.js 
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
I'm Batman!
Abort trap: 6

El REPL

Desde el REPL (Bucle de lectura-evaluación-impresión) es un tipo de entorno de ejecución diferente del típico script de Node.js, estas estrategias de salida merecen sus propias secciones especiales. Esto se debe a que REPL es un entorno interactivo y no acaba implícitamente como lo haría un script.

Como ya hemos mencionado en algunas de las secciones anteriores, algunas de las estrategias anteriores también funcionarán en el REPL. Sin embargo, no es típico usarlos en este caso, y en su lugar debería usar los siguientes métodos.

Salir usando una combinación de teclas

A diferencia de vim, salir de REPL es realmente sencillo. En un REPL en ejecución, puede salir usando la combinación de teclas Ctrl + Cy tecleando dos veces. Esto envía el SIGNO, o señal de interrupción, al REPL. Esto se usa comúnmente para salir de programas en sistemas POSIX.

Usando el comando .exit

También podemos salir de un REPL de Node.js usando el comando “.exit”. Cuando ingresa esto en un REPL de node en ejecución, el REPL actual saldrá. Esta invocación funciona de manera similar a la Ctrl + C método discutido anteriormente.

Conclusión

En muchos casos, el uso process.exit será suficiente para salir de Node.js. Sin embargo, como vimos, existen numerosas alternativas. Los diversos métodos le brindan flexibilidad para salir de cualquier lugar en particular en su código. Sin embargo, debe tener cuidado con este poder adicional para no insertar código peligroso que puede resultar en salidas no planificadas, bloqueando sus programas.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad