node.js-Forever + Nodemon一起运行

有什么办法可以使这两个软件包一起运行?

因此,基本上,我希望两全其美。 自动运行服务器(并在出现错误时重新启动),并在发生.js文件更改时自动更新。

Patrik Fuhrmann asked 2020-02-22T12:15:52Z
7个解决方案
63 votes

你应该运行这样的东西

forever start -c nodemon app.coffee
Anton Borodatov answered 2020-02-22T12:16:39Z
46 votes

Toxa步入正轨,cfogelberg提出的问题是正确的,但是要避免该问题,您可以执行以下操作:

forever -c "nodemon --exitcrash" app.js

这样可确保forever --help实际上退出了(而不是给您“应用程序崩溃”消息),然后-c再次将其接收。

forever --help中,此-c指定要运行的命令,否则默认为节点。 不使用-c会导致在此答案的注释中提及的错误。

Jubair answered 2020-02-22T12:16:18Z
15 votes

--uid常见问题解答中有关于它的条目:

如果您将nodemon与   永远(也许在   生产环境),您可以将两者结合在一起。 这样的话   脚本崩溃,永远重启脚本,如果有文件   更改后,nodemon将重新启动脚本。 有关更多详细信息,请参见问题   30岁

为此,您需要在对的调用中添加以下内容   --uid

  • 使用永远的--uid选项来指示永远运行SIGKILL而不是node
  • 包括nodemon --uid标志,以确保在脚本崩溃时(或意外退出)nodemon退出。
  • 请求nodemon停止时,永远告诉永远使用--uid而不是SIGKILL。 这确保nodemon可以停止受监视的节点   干净地处理。
  • (可选)添加--uid参数,为过程添加唯一的名称。 在示例中,uid设置为bash forever stop foo

bash forever stop foo

为了测试这一点,您可以杀死server.js进程,并且将永远   重新启动它。 如果您是bash forever stop foo,nodemon将重新启动它。

要停止永久和节点监控的进程,只需调用   以下,使用我们在上面分配的bash forever stop foofoo):

bash forever stop foo

这将同时停止nodemon和它正在监视的节点进程。

请注意,我不建议在生产中使用nodemon   环境-但这是因为我不想在没有我的情况下重新启动   明确的指示。

mik01aj answered 2020-02-22T12:17:55Z
10 votes

我还没有找到使两个软件包一起运行的方法。 我试图做@toxa的技术,但是当我的node.js应用抛出异常时,nodemon不会自动重启它,而是向永久日志输出错误消息:

nodemon] app crashed - waiting for file changes before starting...

但是,永远拥有forever -w选项,并且以下命令实际上与我同时运行nodemon和永远在一起的效果相同:

forever start -w my-app.js

forever -wnodemon相比的缺点是:forever没有--delay选项,因此对于每个更改的文件,我的服务器都会重新启动一次。

cfogelberg answered 2020-02-22T12:18:25Z
5 votes

我喜欢Toxa和Jubair建议的组合。

forever start -c nodemon app.coffee --exitcrash
bcbrian answered 2020-02-22T12:18:45Z
2 votes

如果您需要传递参数:

forever start -c "nodemon --harmony" app.js --exitcrash
Karl Morrison answered 2020-02-22T12:19:05Z
1 votes

我正在使用永远服务。 。 。

这对我有用。 它执行以下操作:每次修改应用程序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
Julia Anne Jacobs answered 2020-02-22T12:19:38Z
translate from https://stackoverflow.com:/questions/16369018/forever-nodemon-running-together