【问题标题】:Node.js - Unable to run node server using foreverNode.js - 无法永远运行节点服务器
【发布时间】:2013-05-18 21:22:32
【问题描述】:

我正在尝试使用 forever 命令运行节点服务器。 我使用永久全局安装:

npm install forever -g

永久安装后,我尝试使用以下命令运行我的节点脚本:

node_modules\.bin\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 f
or at least 1000ms
info:    Forever processing file: app.js

请帮我解决这个问题!

【问题讨论】:

  • 您的 app.js 文件中有什么内容?
  • 您尝试forever list 看看您的app.js 是否正在运行?
  • (对垃圾邮件感到抱歉)如果在 forever list 列表中看到您的 app.js,但您仍然认为它没有运行,请打开 forever 创建的日志文件以查看是否有任何错误.

标签: node.js forever


【解决方案1】:

如果你设置一个全局模块(-g 选项)“永远”在 $path 中

forever start app.js

应该可以。

【讨论】:

  • command "forever start app.js" 抛出我发布的消息!
【解决方案2】:

除了永远建议您声明的配置警告外,这里没有问题。如果您在那里看到最后一条消息,它会告诉您它已经处理了您的脚本。只需运行forever list,您应该会看到您的脚本正在运行。

我在通过 yum 存储库 (yum install npm) 安装 npm 然后永远安装时遇到了同样的事情,而当我通过 shell 脚本安装 node 和 npm 然后永远安装时,它不会发生。它必须与软件包安装程序的公式有关,或者可能缺少带有安装程序标志的别名,以便在幕后设置这些值。

这些并不意味着它不起作用。见下文,我使用节点站点的示例代码创建了一个 js 文件并手动运行它(我刷新了防火墙以暂时打开应用程序的端口,但您不需要):

[root@app1 ~]# vi example.js
[root@app1 ~]# apf -f
apf(23924): {glob} flushing & zeroing chain policies
apf(23924): {glob} firewall offline
[root@app1 ~]# node example.js 
Server running at http://127.0.0.1:1337/

然后我永远使用启动应用程序:

^C[root@app1 ~]# forever start example.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: example.js

现在我检查我的应用是否正在运行:

[root@app1 ~]# forever list
info:    Forever processes running
data:        uid  command       script     forever pid   logfile                 uptime       
data:    [0] dan1 /usr/bin/node example.js 23976   23978 /root/.forever/dan1.log 0:0:0:27.320 
[root@app1 ~]#

【讨论】:

  • 我缺少的部分是消息Forever processing file: app.js 表示它有效。我没有意识到该文件是在后台处理的,您必须执行forever list 才能查看进程。我现在有 4 次跑步,因为我一遍又一遍地尝试这个。哈哈。
  • 但是当我在 app.js 中对后端代码进行一些更改后刷新我的网页时,这些更改并没有反映出来
【解决方案3】:

这解决了我的问题:

forever start -c node [path/to/app]

"-c" 表示 - 运行命令;然后通过 nodejs 运行

这样 - 默认情况下,您将获得 Respawn。 1000 毫秒正常运行时间

取自:https://github.com/nodejitsu/forever/issues/422,作者“Basarat”

【讨论】:

    【解决方案4】:

    首先停止所有正在运行的应用程序:

    forever stopall
    

    然后使用此命令。它对我有用并解决了我的问题:

    forever -w ./bin/www
    

    你应该在 package.json 文件中找到这个:

    "scripts": {
        "start": "node ./bin/www"
      }
    

    希望对你有帮助。

    【讨论】:

      【解决方案5】:

      如果forever 无法写入指定的日志文件,也会产生相同类型的输出,但不会启动应用程序。我曾经遇到过日志文件变得太大而导致进程无法启动的情况。

      【讨论】:

        【解决方案6】:

        首先改变你的 package.json 脚本,比如

        "scripts": {
              "start": "forever ./bin/www.js"
         }
        

        在 linux 控制台上启动这个命令:sudo npm start

        仅适用于 Windows:npm start

        【讨论】:

          【解决方案7】:

          如果你正在使用带有 express 框架的 node js,那么脚本将不会开始使用:

          forever start app.js
          

          首先停止所有正在运行的应用程序:

          forever stopall
          

          使用此 Express 框架时,必须以:

          forever start ./bin/www
          

          【讨论】:

            【解决方案8】:

            我今天刚刚在 AWS Lightsail 服务器上遇到了这个问题,这里或其他地方的答案都没有任何效果。一切正常,直到从 NodeJS 10.x 升级到 13.x。我尝试永久删除和重新安装,更改文件和目录的权限等,但我不断收到 EACCES 错误。问题似乎是永远无法在其 .forever 目录中创建目录。唯一有效的是执行以下操作:

            1) 删除 .forever 文件夹及其所有子文件夹和内容。对我来说,这是通过以下方式完成的: sudo rm -rf /home/bitnami/.forever

            2) 手动重新创建 .forever 文件夹: sudo mkdir /home/bitnami/.forever

            3) 手动设置 .forever 文件夹的权限: sudo chmod -R o+rwx /home/bitnami/.forever

            4) 手动重新创建 .forever/pids 文件夹: sudo mkdir /home/bitnami/.forever/pids

            5) 手动设置 .forever/pids 文件夹的权限: sudo chmod -R o+rwx /home/bitnami/.forever/pids

            6) 手动重新创建 .forever/sock 文件夹: sudo mkdir /home/bitnami/.forever/sock

            7) 手动设置 .forever/sock 文件夹的权限: sudo chmod -R o+rwx /home/bitnami/.forever/sock

            8) 再次使用 sudo 命令运行我的 NodeJS 应用程序。

            9) 列出永远在运行的进程,并验证我的应用是否存在。

            我不知道为什么我必须经历所有这些,因为递归地设置权限应该做同样的事情,但是在这样做之后,永远开始像以前一样完美地运行。

            希望这对某人有所帮助。

            【讨论】:

              【解决方案9】:
              forever stopall
              
              cd /<app-folder>
              
              forever -w ./bin/www
              

              这只是在 Google Cloud Bitnami VM 中为我工作

              【讨论】:

              • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
              猜你喜欢
              • 2014-11-06
              • 1970-01-01
              • 2021-12-05
              • 2019-01-21
              • 2014-12-02
              • 2014-09-03
              • 2018-01-27
              • 2015-10-27
              • 2021-10-04
              相关资源
              最近更新 更多