我是否可以告诉工头每次提出请求时重新加载网络应用程序,这样我可以体面地发展?

21 node.js foreman

我使用node.js在JavaScript中编写的Web应用程序.我使用Foreman,但每次更改代码时我都不想手动重启服务器.我可以告诉Foreman在处理HTTP请求之前重新加载整个Web应用程序(即重启node过程)吗?

小智 23

这是Pendlepants解决方案的调整版本.Foreman查找.env文件来读取环境变量.您可以让Foreman切换用于启动的命令,而不是添加包装器:

在.env:

WEB=node app.js
Run Code Online (Sandbox Code Playgroud)

在dev.env中:

WEB=supervisor app.js
Run Code Online (Sandbox Code Playgroud)

在您的Procfile中:

web: $WEB
Run Code Online (Sandbox Code Playgroud)

默认情况下,Foreman将从.env(在生产中)读取,但在DEV中只运行:

foreman start -e dev.env
Run Code Online (Sandbox Code Playgroud)

  • 这在Heroku上对我不起作用 - 从未加载`.env`文件.制作一个单独的Procfile,而不是:http://stackoverflow.com/questions/10560241/how-to-use-nodemon-with-env-files (4认同)

小智 7

您可以使用重新运行来实现此目的

您可能只为此实现2个命令:

  1. 宝石安装重新运行
  2. 重新开始工头开始

然后,在文件发生任何更改后,重新运行将自动重新启动进程.


abe*_*yer 6

如果你使用nodemon ,你可以这样做

nodemon --exec "foreman start"
Run Code Online (Sandbox Code Playgroud)