Usted crea la aplicación node.js con express v4.x y luego inicia su aplicación en npm start . Mi pregunta es ¿cómo detener la aplicación? ¿Hay parada npm ?
EDITAR para incluir el error al implementar npm stop
/home/nodetest2# npm stop
> nodetest2@0.0.1 stop /home/nodetest2
> pkill -s SIGINT nodetest2
pkill: invalid argument for option 's' -- SIGINT
npm ERR! nodetest2@0.0.1 stop: `pkill -s SIGINT nodetest2`
npm ERR! Exit status 2
--signal
. Úseloman pkill
para leer sobre pkill.Todas las demás soluciones aquí dependen del sistema operativo. Una solución independiente para cualquier sistema operativo usa socket.io de la siguiente manera.
package.json
tiene dos guiones:server.js: aquí vive su contenido express habitual
server.stop.js
Pruébalo
npm start
(iniciar su servidor como de costumbre)npm stop
(esto ahora detendrá su servidor en ejecución)El código anterior no ha sido probado (es una versión reducida de mi código, mi código funciona) pero espero que funcione como está. De cualquier manera, proporciona la dirección general a seguir si desea utilizar socket.io para detener su servidor.
fuente
Cuando probé la solución sugerida, me di cuenta de que el nombre de mi aplicación estaba truncado. Leí
process.title
en la documentación de nodejs ( https://nodejs.org/docs/latest/api/process.html#process_process_title ) y diceMi aplicación no usa ningún argumento, por lo que puedo agregar esta línea de código a mi
app.js
y luego agregue estas pocas líneas a mi
package.json
archivopara utilizar nombres de proceso realmente largos.
npm start
y elnpm stop
trabajo, por supuestonpm stop
, siempre terminará todos los procesos en ejecución, pero eso está bien para mí.fuente
Este es un problema de versión mintty; alternativamente, use cmd. Para matar el proceso del servidor, simplemente ejecute este comando:
fuente
En MAC OS X (/ BSD): puede intentar usar el comando lsof (listar archivos abiertos)
y entonces
fuente
Verifique con netstat -nptl todos los procesos
Y simplemente mata el proceso por la referencia PID ... En mi caso, quiero detener el 6231 / nodejs, así que ejecuto el siguiente comando:
fuente
Aquí hay otra solución que combina ideas de las respuestas anteriores. Adopta el enfoque de "proceso de eliminación" al tiempo que aborda la preocupación por la independencia de la plataforma.
Se basa en el paquete tree-kill para manejar la eliminación del árbol de procesos del servidor. Encontré que es necesario matar todo el árbol de procesos en mis proyectos porque algunas herramientas (por ejemplo
babel-node
) generan procesos secundarios. Si solo necesita matar un proceso, puede reemplazar tree-kill con elprocess.kill()
método incorporado .La solución a continuación (los dos primeros argumentos
spawn()
deben modificarse para reflejar la receta específica para ejecutar su servidor):build / start-server.js
build / stop-server.js
package.json
Tenga en cuenta que esta solución separa el script de inicio del servidor (es decir
npm start
, volverá inmediatamente y no se bloqueará hasta que se detenga el servidor). Si prefiere el comportamiento de bloqueo tradicional, simplemente elimine eloptions.detached
argumento ayspawn()
la llamada achild.unref()
.fuente
Si ya lo ha intentado
ctrl + c
y aún no funciona, es posible que desee probar esto. Esto me ha funcionado.Ejecute la línea de comandos como administrador. Luego ejecute el siguiente comando para encontrar el ID de proceso (PID) que desea eliminar. Escriba su número de puerto en
<yourPortNumber>
netstat -ano | findstr :<yourPortNumber>
Luego, ejecuta este comando después de haber identificado el PID.
taskkill /PID <typeYourPIDhere> /F
Felicitaciones a @mit $ ingh de http://www.callstack.in/tech/blog/windows-kill-process-by-port-number-157
fuente
Si es muy simple, simplemente mata el proceso.
fuente
Para la máquina con Windows (estoy en Windows 10), si el comando CTRL + C (Cancelar / Abortar) en cli no funciona, y la pantalla se muestra así:
Intente presionar ENTER primero (o cualquier tecla lo haría) y luego CTRL + C y el proceso actual le preguntará si desea terminar el trabajo por lotes:
Quizás CTRL + C solo termina el proceso principal mientras que npm start se ejecuta con otros procesos secundarios. Sin embargo, no estoy seguro de por qué tiene que presionar esa tecla adicional antes de CTRL + C, pero funciona mejor que tener que cerrar la línea de comando y comenzar de nuevo.
Es posible que desee comprobar un problema relacionado: https://github.com/mysticatea/npm-run-all/issues/74
fuente
Para entornos de producción, debe usar Forever.js
Es tan útil para iniciar y detener el proceso de nodo, también puede enumerar las aplicaciones en ejecución.
https://github.com/foreverjs/forever
fuente
Puedes usar pm2
https://pm2.keymetrics.io/docs/usage/quick-start/
después de la instalación simplemente escriba terminal
pm2 start app.js
y entoncespm2 stop 0
para detener su servidorfuente
En caso de que su archivo json no tenga un script para detener la aplicación, una opción que uso es simplemente presionando ctrl + C en el cmd.
fuente
Toda (3) solotion es:
1- ctlr + C
2- en el archivo json, escriba un script que se detenga
"scripts": {"stop": "killall -SIGINT este-nombre-puede-ser-tan-largo-como-necesita-ser"},
* que en el comando write // npm stop //
3- Reinicia la pc
fuente
Tienes que presionar la combinación ctrl + z Mi sistema operativo es Ubuntu
fuente