He instalado y estoy ejecutando un servidor node.js en osx. He dled un módulo de chat y lo estoy ejecutando felizmente. He modificado algunas piezas y necesito reiniciar el servidor para ver los efectos.
Solo sé cómo reiniciar cerrando la ventana del terminal y luego reabrirla y luego ejecutar el nodo chatdemo.js nuevamente.
¿Alguna forma de reiniciar sin cerrar la terminal?
Gracias.
forever restart
Respuestas:
Si solo se está ejecutando (no es un demonio), use
Ctrl-C
.Si está demonizado, puede intentar:
$ ps aux | grep node you PID 1.5 0.2 44172 8260 pts/2 S 15:25 0:00 node app.js $ kill -2 PID
Donde
PID
se reemplaza por el número en la salida deps
.fuente
nohup node server.js &
Durante el desarrollo, la mejor manera de reiniciar el servidor para ver los cambios realizados es usar nodemon
nodemon observará los archivos en el directorio en el que se inició nodemon y, si cambian, reiniciará automáticamente su aplicación de nodo.
Verifique el repositorio git de nodemon : https://github.com/remy/nodemon
fuente
En este caso, está reiniciando su servidor node.js con frecuencia porque está en desarrollo activo y está haciendo cambios todo el tiempo. Existe un excelente script de recarga en caliente que se encargará de esto por usted al observar todos sus archivos .js y reiniciar su servidor node.js si alguno de esos archivos ha cambiado. Solo el boleto para un rápido desarrollo y prueba.
El guión y la explicación sobre cómo usarlo están aquí en Draco Blue .
fuente
Tuve el mismo problema y luego escribí este script de shell que mata todos los procesos de nodo existentes:
#!/bin/bash echo "The following node processes were found:" ps aux | grep " node " | grep -v grep nodepids=$(ps aux | grep " node " | grep -v grep | cut -c10-15) echo "OK, so we will stop these process/es now..." for nodepid in ${nodepids[@]} do echo "Stopping PID :"$nodepid kill -9 $nodepid done echo "Done"
Después de que esto se guarde como un archivo de script de shell (xxx.sh), es posible que desee agregarlo a su PATH como se describe aquí .
(Tenga en cuenta que esto matará todos los procesos con "nodo" en su nombre, excepto el de grep, así que supongo que en algunos casos también puede matar algunos otros procesos con un nombre similar)
fuente
cut -c17-20
pkill node
es?Decir "nodemon" respondería a la pregunta.
Pero sobre cómo solo matar (todos) los demonios del nodo, lo siguiente funciona para mí:
fuente
Entiendo que mi comentario se relaciona con Windows, pero puede ser de utilidad para alguien. Para ejecutar win en cmd:
wmic process where "commandline like '%my_app.js%' AND name='node.exe' " CALL Terminate
entonces puedes ejecutar tu aplicación nuevamente:
También puede usarlo en un archivo por lotes, con comillas de escape:
wmic process where "commandline like '%%my_app.js%%' AND name='node.exe' " CALL Terminate node my_app.js
fuente
Usar "kill -9 [PID]" o "killall -9 node" funcionó para mí donde "kill -2 [PID]" no funcionó.
fuente
Si solo ejecuto la aplicación de nodo desde la consola (sin usar para siempre, etc.), uso control + C, no estoy seguro de si OSX tiene la misma combinación de teclas para terminar, pero mucho más rápido que encontrar la identificación del proceso y matarlo, también puede agregar el siguiendo el código de la aplicación de chat que está utilizando y luego escriba 'salir' en la consola cada vez que desee cerrar la aplicación.
process.stdin.resume(); process.stdin.setEncoding('utf8'); process.stdin.on('data', function(data) { if (data == 'exit\n') process.exit(); });
fuente
Primero abra la terminal / línea de comando, luego vaya al directorio de su proyecto, ahora instale nodemon usando el comando npm install nodemon --save-dev este comando se asegurará de que se guarde como dependencia del desarrollador. Si está trabajando con expressjs , en su archivo de paquete se verá así
{ "name": "expressjs-app", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "morgan": "~1.9.1", "pug": "^2.0.4" }, "devDependencies": { "nodemon": "^2.0.3" } }
ahora modifique el valor de "inicio" en su archivo package.json, para producción usaremos el valor existente pero para desarrollo usaremos nodemon para rastrear los cambios en el archivo fuente sin reiniciar el servidor. El nuevo valor de inicio es "inicio": "si [[$ NODE_ENV == 'producción']]; luego nodo ./bin/www; de lo contrario nodemon ./bin/www; fi"
El archivo final package.json se verá así
{ "name": "expressjs-app", "version": "0.0.0", "private": true, "scripts": { "start": "if [[$NODE_ENV=='production']]; then node ./bin/www; else nodemon ./bin/www; fi" }, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "morgan": "~1.9.1", "pug": "^2.0.4" }, "devDependencies": { "nodemon": "^2.0.3" } }
para desinstalar nodemon jusy simplemente ejecute el comando npm desinstalar nodemon
fuente