Node.js NodeJS和Forever(监视和重新启动应用程序)

Node.js NodeJS和Forever(监视和重新启动应用程序),node.js,monitor,forever,Node.js,Monitor,Forever,我正在尝试设置永久和节点,以监视和重新启动我的应用程序,并在退出时保持其运行。目前我有: var forever = require("forever-monitor"); var child = new(forever.Monitor)('main.js', { 'silent': false, 'pidFile': '../pids/app.pid', 'sourceDir': '.', 'watch': true, 'watchDirectory'

我正在尝试设置
永久
节点
,以监视和重新启动我的应用程序,并在退出时保持其运行。目前我有:

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中),但看起来一切都应该正常

编辑:
我设法解决了这个问题。这是库代码中的一个bug。检查这里:

检查
nodemon
包来完成整个“文件更改时重新加载”的工作

nodemon和forever是持续跑步的痛苦。我会先尝试使用shell脚本。如果您在linux上,只需在/etc/cron.d中放置一个monitornode文件

*/1 * * * * root  /var/www/nodejs/monitornode.sh
在你的机器上的某个地方有一个脚本

如果要开始,请尝试此操作,创建一个文件/var/www/nodejs/monitornode.sh和chmod+x:

#!/bin/sh

TT_NODE="node /var/www/nodejs/node.js"

# NODEJS Watcher
if [ -z `pgrep -f -x "$TT_NODE"` ] 
then
    echo "Starting $TT_NODE."
    cmdNODE="$TT_NODE >> /var/www/logs/node.log &"
    eval $cmdNODE
fi

只需注意,永远需要的人可能关心稳定性和容错性,这通常意味着不运行Windows机器来为web应用提供服务。也许可以解释为什么你在这里或者在github问题上没有看到很多回应。我不会走操作系统的老路。无论如何,我没有说我正在使用WindowsXP进行生产。我只是说我在用它。NodeJS成为所有问题的标准答案都是“使用Linux”的多操作系统有什么意义呢?这更像是玩世不恭,而不是玩世不恭。你必须知道,这些开发人员并没有在Windows7(更不用说WindowsXP)上投入太多宝贵的时间进行测试。我刚刚完成了一个nodejs应用程序,该应用程序打算在windows上运行,因为我的客户端将使用它,而在这些节点包中修复windows上的问题的进度要慢得多。不管怎么说,人们在生产web应用程序中永远使用。如果您使用封闭源代码的操作系统在生产环境中运行web应用程序,则可能是做错了。当然可能会有例外,但节点是一个明显的单向的东西。@StevenLu“不管怎样,人们永远在生产web应用程序中使用。”你能详细说明和/或引用来源吗?你真的认为Forever足够成熟,可以用于生产吗?我不认为很难想出例子:。。。很抱歉听起来自以为是。我认为MS的闭源堆栈缺乏总体稳定性和价值。因此,我敦促您,特别是如果您想使用node,切换到Linux,如果您关心正常运行时间之类的事情。我已经看到了它,但它不会让您通过编程控制它(