1

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);

これはエロルです


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)

4

2 に答える 2

6

LearnBoostの古いクラスターモジュールを使用しようとしているようです。そのモジュールがリリースされてから、はNode.jsのコアモジュールclusterの名前になり、を使用すると常にコアモジュールが返されます。詳細については、LearnBoost / cluster issue#166を参照してください。require('cluster')

于 2012-07-16T20:04:38.003 に答える
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
}
于 2012-07-16T19:19:10.577 に答える