Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

633
Views
Cómo salir en Node.js

¿Cuál es el comando que se utiliza para salir? (es decir, terminar el proceso de Node.js)

over 4 years ago · Santiago Trujillo
22 answers
Answer question

0

Salir

 let exitCode = 1; process.exit(exitCode)

Códigos de salida útiles

1 - Catchall para errores generales
2 - Mal uso de shell incorporados (según la documentación de Bash)
126 - El comando invocado no puede ejecutarse
127 - "comando no encontrado"
128 - Argumento inválido para salir
128+n - Señal de error fatal “n”
130 - Script terminado por Control-C
255\* - Estado de salida fuera de rango
over 4 years ago · Santiago Trujillo Report

0

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:

Es importante tener en cuenta que llamar a process.exit() obligará al proceso a salir lo más rápido posible, incluso si todavía hay operaciones asincrónicas pendientes que aún no se han completado por completo, incluidas las operaciones de E/S a process.stdout y process.stderr .

En la mayoría de las situaciones, en realidad no es necesario llamar explícitamente a process.exit() . El proceso de Node.js se cerrará por sí solo si no hay trabajo adicional pendiente en el bucle de eventos. La propiedad process.exitCode se puede configurar para decirle al proceso qué código de salida debe usar cuando el proceso finaliza correctamente.

Analicemos las posibles razones por las que podría estar dispuesto a salir del proceso node.js y por las que debería evitar el 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 se cierra, indica que algunas operaciones asincrónicas aún están pendientes. Es incorrecto forzar la finalización del proceso con process.exit() en este punto. Es mejor tratar de entender qué impide que su secuencia de comandos salga de la manera esperada . Y cuando resuelva esto, puede usar process.exitCode para devolver cualquier resultado al proceso de llamada.

Caso 2 - Terminación por señal externa (SIGINT/SIGTERM/otro)

Por ejemplo, si está dispuesto a cerrar con gracia una aplicación Express . A diferencia de la secuencia de comandos de la línea de comandos, la aplicación Express sigue ejecutándose infinitamente, esperando nuevas solicitudes. process.exit() será una mala opción aquí porque 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 completaron 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 terminen las pendientes con server.close() :

 var express = require('express'); var app = express(); var server = app.listen(80); process.on( 'SIGTERM', function () { server.close(function () { console.log("Finished all requests"); }); });

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 con un formato agradable. 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) terminará el proceso silenciosamente y no habrá posibilidad de recuperarse de esto. Puede ser el único "beneficio" de process.exit() , puede estar seguro de que el proceso finalizará.

over 4 years ago · Santiago Trujillo Report

0

REPL (Línea de comandos)

  • Presione ctrl + c dos veces

  • Escribe .exit y presiona enter

Archivo de comandos

 process.exit(code)

El nodo normalmente sale con el código 0 cuando no hay más operaciones asincrónicas 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 fue forzado a cerrarse.

Hay otros códigos de salida como

3 - Error interno de análisis de JavaScript (muy, muy raro)

5 - Error fatal en el motor javascript v8

9 - Argumento inválido

Para obtener una lista completa, consulte los códigos de salida del nodo

over 4 years ago · Santiago Trujillo Report

0

Presione Ctrl + C dos veces o .exit .

 > (To exit, press ^C again or type .exit) >
over 4 years ago · Santiago Trujillo Report

0

Pude hacer que todos mis procesos de nodo murieran directamente desde el shell de 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 usar taskkill //F //IM node.exe . No estoy seguro de por qué tanto - como // funcionan en este contexto. ¡Espero que esto ayude!

over 4 years ago · Santiago Trujillo Report

0

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 "Terminar proceso".

over 4 years ago · Santiago Trujillo Report

0

Abra la 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 desde el código,

 process.exit(); // graceful termination process.exit(1); // non graceful termination
over 4 years ago · Santiago Trujillo Report

0

La salida en el nodo js se realiza de dos formas:

  • Llamar a process.exit() explícitamente.
  • O bien, si el bucle de eventos de nodejs se realiza con todas las tareas y no queda nada por hacer. Luego, la aplicación del nodo se cerrará automáticamente.

¿Cómo funciona?

Si desea forzar el ciclo de ejecución para que detenga el proceso, puede usar 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 hay operaciones asincrónicas que no se han realizado.

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 un 'fallo'.

over 4 years ago · Santiago Trujillo Report

0

Como el proceso es un objeto global, no necesita importar ningún módulo. La siguiente función cierra o elimina el proceso del nodo actual.

proceso.salir(código)

proceso.matar(proceso.pid)

proceso.abortar()

over 4 years ago · Santiago Trujillo Report

0

si desea salir de la aplicación node js, escriba

 process.exit(1)

en tu código

over 4 years ago · Santiago Trujillo Report

0

Puede usar la función process.exit([code]) .

Si desea salir sin un 'fallo', utilice el código 0 :

 process.exit(0);

Para salir con un código de 'fallo' 1 , puede ejecutar:

 process.exit(1);

El código de 'fallo' del fallo es específico de la aplicación. Así que puedes usar tus propias convenciones para ello.

over 4 years ago · Santiago Trujillo Report

0

ctrl + C para terminar el proceso actual
ctrl + C dos veces es para salir del shell REPL
ctrl + c para salir de REPL SHELL

over 4 years ago · Santiago Trujillo Report

0

agregando

 process.exit(1);

hará el truco por ti

over 4 years ago · Santiago Trujillo Report

0

import mongosse from 'mongoose' import dotenv from 'dotenv' import colors from 'colors' import users from './data/users.js' import products from './data/products.js' import User from './models/userModel.js' import Product from './models/productModel.js' import Order from './models/orderModel.js' import connectDB from './config/db.js' dotenv.config() connectDB() const importData = async()=>{ try{ await Order.deleteMany() await Product.deleteMany() await User.deleteMany() const createdUsers = await User.insertMany(users) const adiminUser = createdUsers[0]._id sampleProducts = products.map(product =>{ return {...product, user:adiminUser } }) await Product.insertMany(sampleProducts) console.log('Data Imported!'.green.inverse) process.exit() //success and exit }catch(error){ consolele.log(`${error}`.red.inverse) process.exit(1) //error and exit } }

así que aquí estoy completando algunas colecciones en una base de datos y en el bloque de prueba si no obtengo ningún error, salimos con un mensaje de éxito, entonces para eso usamos process.exit() sin nada en el parámetro. Si hay un error, debemos salir con un mensaje de error, por lo que pasamos 1 en el parámetro como este, process.exit(1).

extra: aquí por salir nos referimos a salir de ese programa típico de node js. por ejemplo, si este código estaba en un archivo llamado dbOperations.js, entonces el proceso.salir se cerrará y no ejecutará ningún código que siga después del proceso.salir

over 4 years ago · Santiago Trujillo Report

0

Tengo una aplicación que quería:

  1. Enviar un correo electrónico al usuario
  2. Salir con un código de error

Tuve que enlazar process.exit(code) a un controlador de eventos de exit , de lo contrario, el correo no se enviará ya que llamar a process.exit(code) elimina directamente los eventos asincrónicos.

 #!/usr/bin/nodejs var mailer = require('nodemailer'); var transport = mailer.createTransport(); mail = { to: 'Dave Bowman', from: 'HAL 9000', subject: 'Sorry Dave', html: 'Im sorry, Dave. Im afraid I cant do <B>THAT</B>.' } transport.sendMail(mail); //process.exit(1); process.on('exit', function() { process.exit(1); });
over 4 years ago · Santiago Trujillo Report

0

Desde el código, puede usar process.exit([errorcode]) donde [errorcode] es un número entero opcional ( 0 es el valor predeterminado para indicar el éxito).

Si está utilizando Read Eval Print Loop (REPL) , puede usar Ctrl + D o escribir .exit

Alternativamente, en Windows o Linux puede usar Ctrl + C , Ctrl + C

En Mac el comando es Ctrl + Z , Ctrl + Z

over 4 years ago · Santiago Trujillo Report

0

Si está en una terminal de Unix o en la línea de comandos de Windows y desea salir de Node REPL, ya sea...

  • Presione Ctrl + C dos veces, o
  • escriba .exit y presione Entrar, o
  • presione Ctrl + D al comienzo de una línea (solo Unix)
over 4 years ago · Santiago Trujillo Report

0

Solo una nota de que usar process.exit([number]) no es una práctica recomendada .

Llamar a process.exit() obligará al proceso a salir lo más rápido posible incluso si todavía hay operaciones asincrónicas pendientes que aún no se han completado por completo, incluidas las operaciones de E/S a process.stdout y process.stderr .

En la mayoría de las situaciones, en realidad no es necesario llamar explícitamente a process.exit() . El proceso de Node.js se cerrará por sí solo si no hay trabajo adicional pendiente en el bucle de eventos. La propiedad process.exitCode se puede configurar para decirle al proceso qué código de salida debe usar cuando el proceso finaliza correctamente.

Por ejemplo, el siguiente ejemplo ilustra un mal uso del método process.exit() que podría provocar que los datos impresos en la salida estándar se stdout y se pierdan:

 // This is an example of what *not* to do: if (someConditionNotMet()) { printUsageToStdout(); process.exit(1); }

La razón por la que esto es problemático es porque las escrituras en process.stdout en Node.js a veces son asincrónicas y pueden ocurrir en múltiples tics del bucle de eventos de Node.js. Sin embargo, llamar a process.exit() obliga al proceso a salir antes de que se puedan realizar esas escrituras adicionales en stdout .

En lugar de llamar a process.exit() directamente, el código debe establecer el código de salida de process.exitCode y permitir que el proceso finalice de forma natural al evitar programar cualquier trabajo adicional para el bucle de eventos:

 // How to properly set the exit code while letting // the process exit gracefully. if (someConditionNotMet()) { printUsageToStdout(); process.exitCode = 1; }
over 4 years ago · Santiago Trujillo Report

0

Como señaló @Dominic, arrojar un error no detectado es una mejor práctica en lugar de llamar a process.exit([code]) :
process.exitCode = 1; throw new Error("my module xx condition failed");

over 4 years ago · Santiago Trujillo Report

0

Desde la línea de comando, .exit es lo que desea:

 $ node > .exit $

Está documentado en los documentos REPL . REPL (Read-Eval-Print-Loop) es como se llama la línea de comandos de Node.

Desde un programa normal, use process.exit([code]) .

over 4 years ago · Santiago Trujillo Report

0

De la documentación oficial de nodejs.org :

 process.exit(code)

Finaliza el proceso con el código especificado. Si se omite, la salida usa el código de 'éxito' 0.

Para salir con un código de 'fallo':

 process.exit(1);
over 4 years ago · Santiago Trujillo Report

0

Llame al método de exit del objeto de process global:

 process.exit()

De los documentos:

process.exit([exitcode])

Finaliza el proceso con el code especificado. Si se omite, la salida usa el código de 'éxito' 0 .

Para salir con un código de 'fallo':

 process.exit(1);

El shell que ejecutó el nodo debería ver el código de salida como 1 .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!