永远使用Node.js

时间:2011-06-29 17:19:25

标签: node.js

我有一些,可能是微不足道的问题,永远使用Node.js.根据我的阅读,永远可以以编程方式使用,它维护一个包含永久使用的所有脚本的列表。当该进程终止时,它会自动生成一个新进程,直到它停止。

然而,我的问题是,这是怎么做到的?它是否添加这些脚本以便在启动时启动?

2 个答案:

答案 0 :(得分:29)

你可以像这样以编程方式永远使用:

在node.js脚本中使用Forever实例:

var forever = require('forever-monitor');

  var child = new (forever.Monitor)('your-filename.js', {
    max: 3,
    silent: true,
    options: []
  });

  child.on('exit', function () {
    console.log('your-filename.js has exited after 3 restarts');
  });

  child.start();

您应该花一点时间阅读the README.md

中Forever优秀文档中提供的选项

您还可以在Forever中收听许多事件:

  • 错误[错误]:发生错误时触发
  • start [process,fvrFile,data]:首次启动目标脚本时提升。
  • stop [process]:当用户停止目标脚本时触发
  • save [path,data]:当目标监视器将pid信息保存到磁盘时触发。
  • restart [forever]:每次重新启动目标脚本时都会启动
  • 退出[forever]:当目标脚本实际退出(永久)时引发。
  • stdout [data]:从子进程'stdout
  • 收到数据时引发
  • stderr [data]:从子进程'stderr
  • 收到数据时引发

它通过将事件侦听器附加到您尝试运行的脚本并以优雅的方式处理它来实现此目的。

The code如果你想看一下它是如何做到的,那就很好了。

您还应该阅读此excellent tutorial,了解如何让进程永远运行。

至于第二个问题:不,它不会在启动时添加它。为此,您需要将其添加为upstart job或使用Monit之类的内容来监控和启动它。为此,你应该看看Deploying Node.js with Upstart and Monit。这是一个很棒的教程。

答案 1 :(得分:5)

这是一篇很老的帖子,但是我偶然发现了谷歌 - 它有点过时了,因为从程序版本中永久地分支命令行版本。您需要使用forever-monitor代替forever。示例代码现在应该是;

 var forever = require('forever-monitor');

  var child = new (forever.Monitor)('your-filename.js', {
    max: 3,
    silent: true,
    options: []
  });

  child.on('exit', function () {
    console.log('your-filename.js has exited after 3 restarts');
  });

  child.start();

我试图建议原始答案的编辑,但拒绝它的权力。想象我可以省去其他人花时间弄清楚为什么示例代码不起作用: - )