【发布时间】:2013-03-16 09:52:11
【问题描述】:
我正在尝试设置 forever 和 NodeJS 来监控和重新启动我的应用程序,并在退出时保持它运行。目前我有这个:
var forever = require("forever-monitor");
var child = new(forever.Monitor)('main.js', {
'silent': false,
'pidFile': '../pids/app.pid',
'sourceDir': '.',
'watch': true,
'watchDirectory': '.',
'watchIgnoreDotFiles': null,
'watchIgnorePatterns': null,
'logFile': '../logs/forever.log',
'outFile': '../logs/forever.out',
'errFile': '../logs/forever.err'
});
child.start();
这可以很好地启动我的应用程序,但是当我在文件中进行更改时它不会重新启动它。有什么我缺少的选项吗?
编辑: 深入问题后发现实际上检测到文件更改,只是进程没有重新启动。 我正在查看 ~317 行 - Monitor.prototype.kill(在 monitor.js 中),但一切看起来应该可以工作。
编辑: 我设法解决了这个问题。这是库代码中的一个错误。在这里查看:https://github.com/nodejitsu/forever-monitor/issues/27
【问题讨论】:
-
请注意,需要 Forever 的人可能关心稳定性和容错性,这通常意味着不运行 Windows 机器来提供 Web 应用程序。可能会解释为什么您在这里或 github 问题上没有看到很多回复。
-
我不会采用操作系统拖钓的方式。无论如何,我并没有说我正在使用 Windows XP 进行生产。我只是说我正在使用它。 NodeJS 作为“使用 Linux”的标准答案的多操作系统有什么意义?
-
这更像是玩世不恭而不是拖钓。您必须知道这些开发人员没有投入大量宝贵时间在 Windows 7 上进行测试(更不用说 Windows XP)了。我刚刚完成了一个打算在 Windows 上运行的 nodejs 应用程序,因为这是我的客户端将要使用的,并且在这些节点包中修复 Windows 问题的进度要慢得多。无论如何,人们在生产网络应用程序中使用 Forever。如果您使用闭源操作系统在生产环境中运行您的网络应用程序,您可能做错了。当然可能有例外,但 node 是一个明显的 unixy 东西。
-
@StevenLu “无论如何,人们在生产网络应用程序中使用 Forever。”您能否详细说明和/或引用来源?你真的认为 Forever 已经足够成熟,可以在生产环境中使用了吗?