Javascript 为什么Node.js cluster.fork()不在Windows 8上创建进程副本?

Javascript 为什么Node.js cluster.fork()不在Windows 8上创建进程副本?,javascript,windows,node.js,Javascript,Windows,Node.js,我正在试验Node.js,以及它是否是我公司的可行建议。作为it初学者,我试图在没有Express(或alternative)的情况下获得节点的句柄,而未处理的异常会导致整个过程关闭,并基本上使我脱离web,这似乎是一个问题。它非常清楚地说明了这个过程要接受错误 js似乎可以很好地处理这个问题,如果我将它与。事实上,可以使用和使用集群,以便您可以实际关闭出错的进程 我运行的是Windows8EnterpriseX64,我的操作系统/体系结构使用msi。我已经让Node.js工作并一直在使用它。但

我正在试验Node.js,以及它是否是我公司的可行建议。作为it初学者,我试图在没有Express(或alternative)的情况下获得节点的句柄,而未处理的异常会导致整个过程关闭,并基本上使我脱离web,这似乎是一个问题。它非常清楚地说明了这个过程要接受错误

js似乎可以很好地处理这个问题,如果我将它与。事实上,可以使用和使用集群,以便您可以实际关闭出错的进程

我运行的是Windows8EnterpriseX64,我的操作系统/体系结构使用msi。我已经让Node.js工作并一直在使用它。但是,当我从运行示例代码,然后尝试点击
http://localhost:8000
我的浏览器无法连接。如果我在else块中放入
console.log()
调用,它也不会命中

以下是我正在使用的代码:

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
    // Tried this using what the defaults are from http://nodejs.org/api/cluster.html#cluster_cluster_settings
    // The values of these are undefined otherwise. Seems to make no difference.
    // Doesn't work if I remove this line either.
    cluster.settings = {
        execArgv: process.execArgv,
        exec: process.argv[1],
        args: process.argv.slice(2),
        silent: false
    };

    // Fork workers.
    for (var i = 0; i < numCPUs; i++) {
        cluster.fork();
    }

  cluster.on('exit', function(worker, code, signal) {
    console.log('worker ' + worker.process.pid + ' died');
  });
} else {
    console.log("This never hits.");
    http.createServer(function(req, res) {
        res.writeHead(200);
        res.end("hello world\n");
    }).listen(8000);
}
var cluster=require('cluster');
var http=require('http');
var numpus=require('os').cpus().length;
if(cluster.isMaster){
//使用默认设置尝试此操作http://nodejs.org/api/cluster.html#cluster_cluster_settings
//除此之外,这些值未定义。似乎没有什么区别。
//如果我删除这行也不行。
cluster.settings={
execArgv:process.execArgv,
exec:process.argv[1],
args:process.argv.slice(2),
沉默:错
};
//叉工。
对于(变量i=0;i

这是我可以在Windows 8 Enterprise x64上修复的问题吗?是否有解释说明它为什么不工作?

在Windows 8上用Visual Studio调试nodejs应用程序时,我偶然发现了这个问题


检查是否存在可能阻塞侦听端口的过时nodejs进程。令人惊讶的是,当端口被另一个进程阻塞时,listen()没有异常。在我的案例中,我手动杀死了过时的进程,集群按预期工作。

没有在node.js for server中玩太多,但我不记得将侦听放在集群中,您让numCPUs集群在端口8080上一起侦听…可能要添加一个事件(和其他事件)看看他们是否真的在听。你能在linux服务器上尝试同样的方法吗?node.js中的Windows支持一直有点不成熟(因为没有人在服务器上使用Windows),所以如果这是问题的原因,我不会感到惊讶。@DrakaSAN我使用的示例代码在端口8000上有多个,集群的要点是在多个进程之间共享一个端口。