C贸mo salir en Node.js

    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.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *