【问题标题】:Node.js and Forever "exited with code: 0"Node.js 和 Forever “退出代码:0”
【发布时间】:2015-05-30 09:11:27
【问题描述】:

使用 root 帐户的 CentOs 6.5,我有一个可用的 Node.js Express 应用程序:

root@vps [/home/test/node]# npm start app.js
> test@0.0.1 start /home/test/node
> node ./bin/www app.js

可以看到该应用在互联网浏览器上运行。我停止应用程序并尝试永远运行它:

root@vps [/home/test/node]# forever start app.js
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: app.js
root@vps [/home/test/node]#

抛出一些不应该是问题的警告,看起来应该可以工作,但它没有显示在浏览器上,永远列表:

root@vps [/home/test/node]# forever list
info:    Forever processes running
data:        uid  command             script forever pid   id logfile                 uptime
data:    [0] OkGm /usr/local/bin/node app.js 32222   32227    /root/.forever/OkGm.log STOPPED
root@vps [/home/test/node]#

如果我检查 OkGm.log:

error: Forever detected script exited with code: 0

为什么当我永久运行应用程序时它无法运行?

【问题讨论】:

  • 应用程序退出的原因应该在日志中error: Forever detected script exited with code: 0 行之前。很可能是 EACCES 错误或类似错误。
  • @t.niese 日志文件中没有其他内容,只有那一行。当我尝试再次运行它时,会再次在同一行创建另一个具有不同名称的日志文件。
  • 然后你要么用 try-catch 块或 on('error', ...) 抑制错误消息,而不以通知你快速服务器 (?) 将启动的方式处理它.或者你检查一下你是否可以启动它,但它没有成功并且你没有启动它。不管是什么原因,只有你自己能找出原因。我建议在您的应用程序中添加一些日志记录。这样您就可以检测哪些步骤已执行,哪些未执行。

标签: javascript node.js express forever


【解决方案1】:

好的,我知道发生了什么。我试图跑:

forever start app.js

当这个 Express 应用必须启动时:

 forever start ./bin/www

通过错误日志输出(“exited with code: 0”)搜索此问题时,互联网上没有有用的信息,所以我希望这个答案能帮助像我这样的初学者,因为我认为这可能是一个容易犯的错误。

【讨论】:

  • 嘿,我想我遇到了同样的问题,得到了同样的错误。但是我看不到任何日志,并且当我尝试forever list 时收到消息说没有服务正在运行
  • 那么,您是如何实际运行文件的?像./bin/www/app.js 吗?
  • 这个解决方案真的是救命稻草。没有关于如何将 forever 应用于从 express-generator 生成的 nodejs 项目的文档(至少我找不到)。
  • 哇,我的浏览器又一个最爱!!感谢您的帮助,现在我的应用程序已启动并正在运行。这太棒了!
猜你喜欢
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多