永远使用Node.js

我有几个,可能微不足道的问题,永远使用Node.js。 从我读过的东西,永远可以用编程方式来使用,它保存着所有永远使用的脚本的列表。 当这个过程死了,它会自动产生一个新的,直到停止。

但是,我的问题是,永远如何做到这一点? 它是否添加了这些脚本以便在启动时启动?

你可以像这样永久的编程使用:

在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(); 

您应该花一点时间阅读README.md中 Forever的优秀文档中提供的选项

您还有一些可以在Forever中收听的事件:

  • 错误[err]:发生错误时引发
  • 启动[process,fvrFile,data]:当目标脚本首次启动时引发。
  • stop [process]:当目标脚本被用户停止时引发
  • 保存[path,data]:当目标Monitor将pid信息保存到磁盘时引发。
  • 重新启动[forever]:每当目标脚本重新启动时引发
  • 退出(永远):当目标脚本实际上退出(永久)时引发。
  • stdout [data]:当从subprocess的stdout接收到数据时引发
  • stderr [data]:从subprocessstderr收到数据时引发

它通过将事件监听器附加到您正在尝试运行的脚本并以优雅的方式处理它们来完成此操作。

如果你想看看它究竟是怎么做的,那么代码是非常好的文档。

你也应该阅读这个优秀的教程 ,如何让一个进程永远运行。

至于第二个问题:不,它不会在启动时添加它。 为此,您需要添加它作为一个暴发户的工作或使用类似Monit监视和启动它。 为此,您应该看看使用Upstart和Monit部署Node.js。 这是一个很好的教程。

这是一个旧post,但是我在Google上偶然发现了它 – 它有点过时了,因为永远将命令行版本从编程版本分支出来。 你需要永远使用监视器,而不是永远 。 示例代码现在应该是;

  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(); 

我试图build议编辑原来的答案,但被拒绝的权力呢。 想想我可以省下一些时间,我花时间了解为什么示例代码不起作用:-)