有没有办法让这两个包一起运行?
所以基本上我想要从这两个世界中获得最佳效果。自动运行服务器(并在出现错误时重新启动),并在发生.js文件更改时自动更新。
答案 0 :(得分:62)
你应该运行这样的东西
forever start -c nodemon app.coffee
答案 1 :(得分:44)
Toxa走在正确的轨道上,cfogelberg raised有效的问题,但为了避免这个问题,您可以执行以下操作:
forever -c "nodemon --exitcrash" app.js
这可以确保nodemon
实际退出(而不是给你“app crashed”消息),然后forever
再次选择它。
在forever --help
中,-c
指定要运行的命令,否则默认为节点。如果没有-c,则会在此答案的评论中提及错误。
答案 2 :(得分:14)
nodemon
FAQ中有一个关于它的条目:
如果您正在使用nodemon forever(也许是一个 生产环境),你可以把两者结合起来。这种方式如果 脚本崩溃,永远重启脚本,如果有文件 更改,nodemon重新启动您的脚本。有关更多详细信息,请参阅issue 30。
要实现此目的,您需要在调用时添加以下内容
forever
:
- 永远使用
-c nodemon
选项,永远告诉您nodemon
代替node
。- 包含nodemon
--exitcrash
标志,以确保在脚本崩溃(或意外退出)时nodemon退出。- 在请求nodemon停止时,请永远告诉使用
SIGTERM
而不是SIGKILL
。这可确保nodemon可以停止监视节点 干净利落地进行处理。- (可选)添加
--uid
参数,为您的流程添加唯一名称。在示例中,uid设置为foo
。
bash forever start --uid foo --killSignal=SIGTERM -c nodemon --exitcrash server.js
要对此进行测试,您可以终止服务器.js进程 重启它。如果
touch server.js
nodemon将重新启动它。要停止永远和nodemon监控的进程,只需调用 关注,使用我们在上面指定的
uid
(foo
):
bash forever stop foo
这将停止nodemon和它正在监视的节点进程。
请注意,我不会建议在制作中使用nodemon 环境 - 但那是因为我不想让它在没有我的情况下重启 明确指示。
答案 3 :(得分:10)
我还没有找到让两个包一起运行的方法。我试图做@ toxa的技术,但当我的node.js应用程序抛出一个异常时,nodemon不会自动重启它,而是输出一条错误信息给永远的日志:
nodemon] app crashed - waiting for file changes before starting...
但是,永远有一个-w
选项,并且以下命令实际上与我运行nodemon并永远在一起时一样:
forever start -w my-app.js
forever -w
与nodemon
:forever
的缺点是没有--delay选项,因此我的服务器会为每个更改的文件重新启动一次。
答案 4 :(得分:5)
我更喜欢Toxa和Jubair所建议的组合。
forever start -c nodemon app.coffee --exitcrash
答案 5 :(得分:2)
如果你需要传递参数:
forever start -c "nodemon --harmony" app.js --exitcrash
答案 6 :(得分:1)
我正在使用forever-service。 。 。
这对我有用。它执行以下操作:每次修改应用程序dist / assets文件夹中的json或raml文件时,等待10秒,然后重新启动节点应用程序(server.js脚本):
$ forever-service install raml --script server.js -f " -c nodemon" -o " --delay 10 --watch dist/assets -e json,raml --exitcrash" -e "PATH=/usr/local/bin:$PATH"
然后我可以跑:
$ service raml start|stop|restart|status
我也可以使用chkconfig实用程序在服务器重启时启动服务:
$ chkconfig --add raml
$ chkconfig raml on
答案 7 :(得分:0)
在package.json中使用时,请使用单引号将nodemon --existcrash用作单个参数。
"start": "forever -c 'nodemon --exitcrash' server.js"
输出:
app_1 | [nodemon] app crashed
app_1 | error: Forever detected script exited with code: 1
app_1 | error: Script restart attempt #1
app_1 | [nodemon] 1.19.4
app_1 | [nodemon] to restart at any time, enter
rs
app_1 | [nodemon] watching dir(s): *.*
app_1 | [nodemon] watching extensions: js,mjs,json
app_1 | [nodemon] starting
节点/ app / server.js`
app_1 |应用程序在端口3000上运行
`