Una aplicación web Estoy escribiendo en JavaScript usando node.js. Yo uso Foreman, pero no quiero reiniciar el servidor manualmente cada vez que cambio mi código. ¿Puedo decirle a Foreman que vuelva a cargar toda la aplicación web antes de gestionar una solicitud HTTP (es decir, reiniciar el proceso node
)?¿Puedo decirle al capataz que vuelva a cargar la aplicación web cada vez que se realiza una solicitud para que pueda desarrollarme decentemente?
Respuesta
Aquí hay una versión ajustada de la solución Pendlepants. Foreman busca un archivo .env para leer variables de entorno. En lugar de añadir una envoltura, que sólo puede haber conmutar capataz lo mando que utiliza para iniciar las cosas:
En .env:
WEB=node app.js
En dev.env:
WEB=supervisor app.js
En su Procfile:
web: $WEB
Por defecto, capataz leerá de .env (en la producción), pero en la DEV basta con ejecutar esto:
foreman start -e dev.env
El problema no es tanto con Foreman como con la forma en que el nodo no recarga el código en las nuevas solicitudes. La solución es usar un paquete npm como supervisor junto con un contenedor de entorno para Foreman.
primer lugar, instale el supervisor:
npm install -g supervisor
A continuación, escribir un script envoltorio que capataz puede llamar:
if [ "$NODE_ENV" == "production" ]; then
node /path/to/app.js
else
supervisor /path/to/app.js
fi
Establecer permisos del guión envoltorio de ejecutables mediante la ejecución de chmod a+x /path/to/wrapper_script.sh
último , actualice el capataz para usar el script de envoltura. Así que en su Procfile
:
web: /path/to/wrapper_script.sh
Ahora cuando se ejecuta Foreman y su aplicación nodo no se está ejecutando en la producción, se debe recargar en cada petición.
Puede utilizar rerun para este fin
Es posible aplicar sólo 2 comandos para esto:
- joya instalar repetición capataz
- repetición se inicia
vuelva a ejecutar se reiniciará automáticamente procesar después de cualquier cambio en sus archivos.
Esto no sería lento, totalmente reiniciar todo en el procfile en cada cambio de archivos? –
Actualmente uso [supervisor] (https://github.com/isaacs/node-supervisor) para esto, no es realmente un gran problema reiniciar la aplicación en cada actualización de archivos. Es muy conveniente. –
Siento que el comentario de Peter Ehrlich sobre la pregunta original merece ser una respuesta por sí mismo. Creo que un archivo Procfile para local/dev es definitivamente la mejor solución: https://stackoverflow.com/a/10790514/133720
Ni siquiera necesita instalar nada nuevo si usa node-dev.
Tu.archivo env cargado desde Procfile:
NODECMD=node-dev
Su Procfile:
web: $NODECMD app/server.js
Su comando capataz
foreman start -e dev.env -p 9786
Y en su env producción (heroku) establecer una variable de entorno:
NODECMD=node
Si utilizar nodemon , puede hacerlo
nodemon --exec "foreman start"
Este método funciona bien para mí. –
Intenté esto pero se atasca en "[nodemon] clean exit - esperando cambios antes de reiniciar", el servidor no se inicia de nuevo –
- 1. ¿Cómo puedo forzar que mi complemento se vuelva a cargar con cada solicitud?
- 2. Evitar que la aplicación web de iPhone en caché se vuelva a cargar (desplazarse hacia arriba)
- 3. ¿Cómo puedo hacer que AngularJS vuelva a ejecutar una función cada vez que cambian los datos que utiliza?
- 4. ¿Cómo puedo decirle a Struts2 que no valide un formulario la primera vez que se muestra?
- 5. ¿Cómo detener a Android para que no vuelva a dibujar toda la pantalla cada vez que algo cambie?
- 6. ¿Cómo puedo evitar que se vuelva a escribir la base de datos cuando el navegador realiza una recarga/devolución?
- 7. Barra de pestañas, volver a cargar cada vez que se presiona la pestaña
- 8. Cómo puedo decirle a AngularJS que "actualice"
- 9. ¿Cómo se diseña una aplicación web que se debe personalizar para cada nuevo cliente?
- 10. ¿Cómo puedo detectar cada vez que se superponen dos UIImageView?
- 11. ¿Cómo puedo decirle a ProGuard que mantenga mi función que se usa para onClick?
- 12. ¿Cómo puedo forzar a assetic a presentar activos cada vez que la página se vuelve a cargar?
- 13. ¿Cómo dejar que jetty bloquee la solicitud al volver a cargar las clases modificadas?
- 14. ¿Cómo puedo informar a sqlalchemy que genere un error cada vez que MySQL arroje una advertencia?
- 15. Tener que reiniciar tomcat cada vez que realice un cambio
- 16. Necesito reiniciar python en el terminal cada vez que se realiza un cambio en el script
- 17. ¿Canvas se vuelve a dibujar cada vez que cambia algo?
- 18. Crear un archivo de volcado para una aplicación cada vez que se cuelga
- 19. Programando Pygame para que pueda presionar varias teclas a la vez para hacer que mi personaje se mueva diagonalmente
- 20. Preformateando texto para evitar que se vuelva a dibujar
- 21. Evitar que se vuelva a crear la actividad de Android al apagar la pantalla
- 22. UIScrollView llama a layoutSubviews() cada vez que se desplaza
- 23. ¿Cómo hago que jQuery espere a que finalice una llamada Ajax antes de que vuelva?
- 24. ¿Cómo puedo obtener Visual Studio para que siempre vuelva a cargar soluciones, proyectos y archivos modificados?
- 25. ¿Cómo obtener la hora a la que se realiza una solicitud desde el objeto de solicitud en los raíles 3?
- 26. Muestra la imagen que se carga mientras se realiza $ .ajax
- 27. ¿Se puede utilizar el nodo-inspector de depurar una aplicación que se ejecuta con Node.js capataz
- 28. ¿Cómo decirle a PowerShell que espere a que termine cada comando antes de comenzar el siguiente?
- 29. La base de datos de Android se recrea cada vez que se inicia la aplicación
- 30. ¿Cómo puedo decirle a mi aplicación Cocoa que cierre desde la propia aplicación?
Esto no funcionó para mí en Heroku: nunca se cargó el archivo '.env'. Hizo un Procfile por separado, en su lugar: http://stackoverflow.com/questions/10560241/how-to-use- nodemon-with-env-files –