¿Cuál es el comando que se usa para salir? (es decir, finalizar el proceso Node.js)
1868
Llame al método process
del objeto global exit
:
process.exit()
proceso.exit ([código])
Finaliza el proceso con el especificado
code
. Si se omite, exit usa el código de "éxito"0
.Para salir con un código de 'falla':
process.exit(1);
El shell que ejecutó el nodo debería ver el código de salida como
1
.
end()
. De lo contrario, simplemente se colgará.exit
no es engañoso en absoluto. Estás confundido acerca de cómo funciona Node. Piense en Node como el servidor en sí. No solo se activa según sea necesario, como PHP está dentro de un servidor web como Apache. ¡Node ni siquiera tiene que tener nada que ver con los servidores web! Es solo un host para algunos JavaScript, con algunas geniales bibliotecas integradas para hacer cosas útiles.mod_php
ni usar Apache. Puede volver a implementar un httpd en PHP como lo hace el nodo si realmente desea o utilizar un enfoque más sensato / estandarizado como FastCGI tal como puede hacerlo en el nodo.process.exit()
se no se recomienda , como se describe en esta respuesta a continuación .Solo una nota de que el uso no
process.exit([number])
es una práctica recomendada .fuente
process.exit()
está destinado.De la documentación oficial de nodejs.org :
Finaliza el proceso con el código especificado. Si se omite, exit usa el código de 'éxito' 0.
Para salir con un código de 'falla':
fuente
code = 0; process.exit(code);
code
?process.exit()
sin parámetros ya que el código predeterminado es 0process.exit(0);
y lo ejecutanode exit_0.js && echo 'success'
, dirá "éxito". Si crea exit_1.js conprocess.exit(1);
y lo ejecutanode exit_1.js && echo 'success'
, no dirá "éxito" ya que su proceso salió con un valor distinto de cero (que indica un "error" o "salida anormal" al shell). Además, verá diferentes valores$?
si ejecutanode exit_1.js
vsnode exit_0.js
(puede verificar haciendonode exit_1.js
y luego haciendoecho $?
).Si está en un terminal Unix o en la línea de comandos de Windows y desea salir del Node REPL, ...
.exit
y presione Entrar, ofuente
node
REPL, Ctrl + D para salir es un comportamiento estándar, por lo que también funciona en Windows.Desde la línea de comandos,
.exit
es lo que quieres:Está documentado en los documentos REPL . REPL (Read-Eval-Print-Loop) es lo que se llama la línea de comando Node.
Desde un programa normal, use
process.exit([code])
.fuente
Depende de la razón por la que está dispuesto a salir del proceso node.js, pero en cualquier caso
process.exit()
es la última opción a considerar . Una cita de la documentación:Cubramos las posibles razones por las que podría estar dispuesto a salir del proceso node.js y por qué debería evitar
process.exit()
:Caso 1 - Ejecución completa (script de línea de comando)
Si el script ha llegado a su fin y el intérprete de nodo no sale, indica que algunas operaciones asíncronas aún están pendientes. Es incorrecto forzar la finalización del proceso
process.exit()
en este momento. Es mejor tratar de entender qué impide que su script salga de la manera esperada . Y cuando resuelva esto, puede usarprocess.exitCode
para devolver cualquier resultado al proceso de llamada.Caso 2 - Terminación debido a señal externa (SIGINT / SIGTERM / other)
Por ejemplo, si está dispuesto a cerrar con gracia una aplicación express . A diferencia del script de línea de comandos, la aplicación express sigue ejecutándose infinitamente, esperando nuevas solicitudes.
process.exit()
será una mala opción aquí porque va a interrumpir todas las solicitudes que están en proceso. Y algunos de ellos pueden ser no idempotentes (ACTUALIZAR, ELIMINAR). El cliente nunca sabrá si esas solicitudes se han completado o no en el lado del servidor y podría ser la razón de la inconsistencia de datos entre el cliente y el servidor. La única buena solución es decirle al servidor http que deje de aceptar nuevas solicitudes y espere a que las pendientes terminen conserver.close()
:Si aún no sale, vea el Caso 1.
Caso 3 - Error interno
Siempre es mejor
throw
un error, obtendrá un seguimiento de pila y un mensaje de error bien formateados. Los niveles superiores de código siempre pueden decidir si pueden manejar el error (catch
) o dejar que bloquee el proceso. Por otro lado,process.exit(1)
finalizará el proceso en silencio y no habrá posibilidad de recuperarse de esto. Puede ser el único "beneficio" deprocess.exit()
, puede estar seguro de que el proceso finalizará.fuente
Process.exit()
parece una exageración importante para la mayoría de las aplicaciones. Estaba buscando un equivalente a la función die () de php ... más como:throw new Error('die msg')
REPL (línea de comando)
Presione
ctrl + c
dos vecesEscribe
.exit
y presiona enterArchivo de comandos
El nodo normalmente sale con el código 0 cuando no hay más operaciones asíncronas pendientes.
process.exit(1)
debe usarse para salir con un código de falla. Esto nos permitirá inferir que el nodo no se cerró correctamente y se vio obligado a cerrar.Hay otros códigos de salida como
3 - Error interno de análisis de JavaScript (muy, muy raro)
5 - Error grave en el motor v8 javascript
9 - Argumento inválido
Para la lista completa, vea los códigos de salida de nodo
fuente
Tengo una aplicación que quería:
Tuve que conectarme
process.exit(code)
a unexit
controlador de eventos, o de lo contrario el correo no se enviará ya que llamarprocess.exit(code)
directamente mata los eventos asincrónicos.fuente
process.exitCode
trabajar para mí en una herramienta de línea de comandos que estoy construyendo (probado en el Nodo v4.3.0). Pero no pude hacer que se comportara como está documentado. Esto podría haber sido un caso extremocommander
, aunque github.com/tj/commander.js/… me hace preguntarme. No estoy seguro de si alguien más ha visto este problema con el Nodo 4, pero documenta por si acaso para futuras referencias.process.exitCode = 1
, el proceso sale con el código 0.Como señaló @Dominic, lanzar un error no detectado es una mejor práctica en lugar de llamar a process.exit ([código]) :
process.exitCode = 1; throw new Error("my module xx condition failed");
fuente
Salir
Códigos de salida útiles
fuente
Desde el código puede usar
process.exit([errorcode])
where[errorcode]
es un número entero opcional (0
es el valor predeterminado para indicar el éxito).Si usa el bucle de lectura, evaluación, impresión (REPL) , puede usar Ctrl+ Do escribir
.exit
Alternativamente, en Windows o Linux puede usar Ctrl+ C, Ctrl+C
En Mac, el comando es Ctrl+ Z, Ctrl+Z
fuente
node --version
v0.10.18
Presione
Ctrl + C
dos veces o.exit
.fuente
Pude hacer que todos mis procesos de nodo se mueran directamente desde el shell Git Bash en Windows 10 escribiendo
taskkill -F -IM node.exe
: esto finaliza todos los procesos de nodo en mi computadora a la vez. Descubrí que también podía usartaskkill //F //IM node.exe
. No estoy seguro de por qué tanto-
y//
trabajar en este contexto. ¡Espero que esto ayude!fuente
Como el proceso es un objeto global, no necesita importar ningún módulo. La siguiente función sale o mata el proceso del nodo actual.
fuente
Abra el terminal de línea de comando donde se ejecuta la aplicación de nodo y presione Ctrl + C
si desea salir de una aplicación de nodo js del código,
fuente
si desea salir de la aplicación del nodo js, escriba
en tu código
fuente
La salida en el nodo js se realiza de dos maneras:
¿Cómo funciona?
Si desea forzar el ciclo de ejecución para detener el proceso, puede utilizar el proceso de variable global que es una instancia de EventEmitter . Entonces, cuando llama a process.exit () , en realidad emite el evento de salida que finaliza todas las tareas de inmediato, incluso si todavía no se han realizado operaciones asincrónicas.
process.exit () toma un código de salida (Integer) como parámetro. El código 0 es el predeterminado y esto significa que sale con un 'éxito'. Mientras que el código 1 significa que sale con una 'falla'.
fuente
Si está en Windows, vaya al Administrador de tareas, luego vaya a Procesos, busque un proceso llamado "nodo", luego haga clic en él con el botón derecho del mouse y luego haga clic en la opción "Finalizar proceso".
fuente
Puede usar la función process.exit ([código]) .
Si desea salir sin una 'falla', use el código
0
:Para salir con un código de 'falla'
1
puede ejecutar:El código de 'falla' de la falla es específico de la aplicación. Entonces puede usar sus propias convenciones para ello.
fuente