Pat*_*ann 48 node.js forever nodemon
有没有办法让这两个包一起运行?
所以基本上我想要从两个世界中获得最佳.自动运行服务器(并在出现错误时重新启动),并在发生.js文件更改时自动更新.
小智 64
你应该运行这样的东西
forever start -c nodemon app.coffee
Run Code Online (Sandbox Code Playgroud)
Jub*_*air 48
Toxa走在正确的轨道上,cfogelberg提出的问题是有效的,但为了避免这个问题,您可以执行以下操作:
forever -c "nodemon --exitcrash" app.js
Run Code Online (Sandbox Code Playgroud)
这确保nodemon
实际退出(而不是给你"app crashed"消息)然后forever
再次拾取它.
在forever --help
此-c
指定要运行的命令,否则它默认为节点.如果没有-c,则会导致在此答案的注释中提及错误.
mik*_*1aj 15
nodemon
FAQ中有关于它的条目:
如果您永远使用nodemon (可能在生产环境中),则可以将两者结合使用.这样,如果脚本崩溃,则永远重新启动脚本,如果有文件更改,nodemon将重新启动脚本.有关更多详细信息,请参阅问题30.
要实现此目的,您需要在调用时添加以下内容
forever
:
- 使用forever的
-c nodemon
选项告诉永远运行nodemon
而不是node
.- 包含nodemon
--exitcrash
标志以确保在脚本崩溃(或意外退出)时nodemon退出.- 告诉永远使用
SIGTERM
而不是SIGKILL
在请求nodemon停止时.这可确保nodemon可以干净地停止监视节点进程.- (可选)添加
--uid
参数,为流程添加唯一名称.在示例中,uid设置为foo
.
bash forever start --uid foo --killSignal=SIGTERM -c nodemon --exitcrash server.js
要对此进行测试,您可以终止server.js进程并永远重启它.如果
touch server.js
nodemon将重新启动它.要停止forever和nodemon监视的进程,只需使用
uid
我们在上面指定的(foo
)调用以下内容:
bash forever stop foo
这将停止nodemon和它正在监视的节点进程.
请注意,我不建议在生产环境中使用nodemon - 但那是因为如果没有我的显式指令,我不希望它重新启动.
cfo*_*erg 10
我还没有找到让两个包一起运行的方法.我尝试做@toxa的技术,但是当我的node.js应用程序抛出一个异常时,nodemon不会自动重启它,而是输出一条错误消息给永远的日志:
nodemon] app crashed - waiting for file changes before starting...
Run Code Online (Sandbox Code Playgroud)
但是,永远有一个-w
选项,以下命令实际上与我运行nodemon并永远在一起时相同:
forever start -w my-app.js
Run Code Online (Sandbox Code Playgroud)
的缺点forever -w
与nodemon
:forever
没有一个--delay的选择,所以我的服务器获取用于改变每个文件重新启动一次.
我更喜欢Toxa和Jubair所建议的组合.
forever start -c nodemon app.coffee --exitcrash
Run Code Online (Sandbox Code Playgroud)