Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js 0.6.5上的npm群集错误_Node.js_Cluster Computing - Fatal编程技术网

node.js 0.6.5上的npm群集错误

node.js 0.6.5上的npm群集错误,node.js,cluster-computing,Node.js,Cluster Computing,我使用以下代码为我的节点应用程序利用集群npm form = require("connect-form"); express = require("express"); app = express.createServer(form({ keepExtensions: true })); cluster = require("cluster"); // App configuration // .... // Run on cluster cluster( app ) .use(clus

我使用以下代码为我的节点应用程序利用集群npm

form = require("connect-form");
express = require("express");
app = express.createServer(form({ keepExtensions: true }));
cluster = require("cluster");

// App configuration
// ....

// Run on cluster
cluster( app )
 .use(cluster.logger('logs'))
 .use(cluster.stats())
 .use(cluster.pidfiles('pids'))
 .use(cluster.cli())
 .listen(port);
这在节点0.4.4上运行良好,但在节点0.6.5上出现以下错误

luc@localhost:~/server$node app.js

node.js:201
    throw e; // process.nextTick error, or 'error' event on first tick
          ^
TypeError: Property 'cluster' of object #<Object> is not a function
at Object.<anonymous> (/home/luc/server/app.js:15:1)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Array.0 (module.js:470:10)
at EventEmitter._tickCallback (node.js:192:40)
node.js:201
抛出e;//process.nextTick错误,或第一次勾选时的“error”事件
^
TypeError:对象#的属性“cluster”不是函数
反对。(/home/luc/server/app.js:15:1)
在模块处编译(Module.js:432:26)
at Object..js(module.js:450:10)
在Module.load(Module.js:351:31)
at功能。加载(module.js:310:12)
在Array.0中(module.js:470:10)
在EventEmitter上进行回调(node.js:192:40)
我知道“集群”已经在0.4.x节点版本上进行了测试,但错误似乎很奇怪。

有什么想法吗?

集群npm模块已经集成到节点0.6中的节点核心中,并且有一些API更改


您可以在

@mengxy上找到API文档,它们很好地指向了文档,但我遇到了同样的问题。我认为最好指出几点:

  • LearnBoost集群git repo中给出的示例(http://github.com/LearnBoost/cluster/blob/master/examples/express.js)在撰写本文时,无法使用节点0.6

  • 作为Node的最新采用者,我任凭许多例子摆布;我怀疑其他人也是。我还没有看到节点0.6+cluster+express的好例子(可能是因为节点0.6还是比较新的)

  • 因此,根据非工作示例和节点0.6 docs@mengxy,这里是一个集群服务于express应用程序的示例:

    #!/usr/bin/env node
    
    var cluster = require('cluster');
    var express = require('express');
    var os = require('os');
    
    var app = express.createServer();
    
    app.get('/', function(req, res){
      res.send('Hello World from worker ' + process.env.NODE_WORKER_ID);
    });
    
    if (cluster.isMaster) {
      // Fork workers.  Two per core sounds reasonable to me.
      for (var i = 0; i < os.cpus().length * 2; i++) {
        var worker = cluster.fork();
      }
    } else {
      // Worker processes have a http server.
      app.listen(3000);
    }
    
    #/usr/bin/env节点
    var cluster=require('cluster');
    var express=需要(“express”);
    var os=要求(“os”);
    var app=express.createServer();
    app.get('/',函数(req,res){
    res.send('Hello World from worker'+process.env.NODE\u worker\u ID);
    });
    if(cluster.isMaster){
    //叉子工人。每个核心两个对我来说是合理的。
    对于(var i=0;i
    来自:

    Node.JS v0.6.X直接包含“集群”模块,这使得设置多个节点工作程序非常容易,可以在单个端口上侦听

    这与learnboost“cluster”模块不同


    不过还有一件事。日志和内容是否可以像以前使用集群时(在我在上面的问题中发布的代码中)一样轻松处理?非常感谢。我想没有太多的例子,因为这很直观:)FYI os.cpus().length*1对我来说更好。遗憾的是,我发现learnboost版本更易于使用,并且它包含了更多的日志记录功能。
    if (cluster.isMaster) {
      // Fork workers.
      for (var i = 0; i < numCPUs; i++) {
        cluster.fork();
      }
    } else {
      http.Server(function(req, res) { ... }).listen(8000);
    }