我正在尝试使用node.js v0.8.2和群集功能在我的四核机器的每个核心上设置Web服务器
但是我遇到了TypeError:对象不是函数,我确信这是一个简单的错误。
我做错了什么。
这是我正在使用的代码
var cluster = require('cluster')
, http = require('http');
var server = http.createServer(function(req, res){
console.log('%s %s', req.method, req.url);
var body = 'Hello World';
res.writeHead(200, { 'Content-Length': body.length });
res.end(body);
});
cluster(server)
.use(cluster.logger('logs'))
.use(cluster.stats())
.use(cluster.pidfiles('pids'))
.use(cluster.cli())
.use(cluster.repl(8888))
.listen(3000);
这是erorr
F:\nodeJS\module\one.js:11
cluster(server)
^
TypeError: object is not a function
at Object. (F:\nodeJS\module\one.js:11:1)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
答案 0 :(得分:6)
看起来你正在尝试使用旧的Cluster module from LearnBoost。自该模块发布以来,cluster
现在是a core module in Node.js的名称,使用require('cluster')
将始终返回核心模块。有关详细信息,请参阅LearnBoost/cluster issue #166。
答案 1 :(得分:2)
看起来你过度复杂了群集的使用......试试这个:
var cluster = require('cluster')
if ( cluster.isMaster ) {
for ( var i=0; i<2; ++i )
cluster.fork();
} else {
// includes for your app and app controller logic here (just example using express, etc)
///////////////////
// Server initiation
///////////////////
var app = require('express').createServer(),
redis = require("redis"),
Step = require("step"),
client = redis.createClient(siteConf.redisPort, siteConf.redisHost);
// rest of your app here
}