2012-03-05 16 views
2

インストールNodeJSのv0.6.12一切方法「ルータのエラーを持っていません。のMac OS X NodeJS:Macのポートを使用して、MAC OS X上

win764:node iwaldman$ which node 
     /opt/local/bin/node 

    win764:node iwaldman$ node -v 
     v0.6.12 

npm install connectを使用してインストール済みの接続。

var connect = require('connect'); 
    var util = require('util'); 

    function sendJSON(response, obj) { 
     response.writeHead(200, {'Content-Type':'application/json'}); 
     var objStr = JSON.stringify(obj); 
     util.debug('SENDJSON: ' + objStr); 
     response.end(objStr); 
    } 

    var server = connect.createServer(
    connect.router(function(app){ 
     app.get('/foo', function(req, res){ 
      sendJSON(res, {path: 'foo'}); 
     }) 
     app.get('/bar', function(req, res){ 
      sendJSON(res, {parth: 'bar'}); 
     }) 
    }) 
    ); 

    server.listen(3000); 

    util.debug('Server running at http://127.0.0.1:3000'); 

実行ノードconnectServer.js:

は簡単なプログラム、connectServer.jsを書きました。任意のアイデアが高く評価されている

win764:node iwaldman$ node connectserver.js 

    node.js:201 
      throw e; // process.nextTick error, or 'error' event on first tick 
       ^
    TypeError: Object function createServer() { 
     function app(req, res){ app.handle(req, res); } 
     utils.merge(app, proto); 
     utils.merge(app, EventEmitter.prototype); 
     app.route = '/'; 
     app.stack = [].slice.apply(arguments); 
     return app; 
    } has no method 'router' 
     at Object.<anonymous> (/Users/iwaldman/dev/node/connectserver.js:12:10) 
     at Module._compile (module.js:441:26) 
     at Object..js (module.js:459:10) 
     at Module.load (module.js:348:31) 
     at Function._load (module.js:308:12) 
     at Array.0 (module.js:479:10) 
     at EventEmitter._tickCallback (node.js:192:40) 

は、次のエラーを取得します。

+2

あなたは接続と読書速達チュートリアルを使用していますか? 'connect.router'は事ではありません。どちらも 'app.get'ではありません – loganfsmyth

+0

私はチュートリアルを通して自分の道を進んでいます。私はExpressを使用していません。 –

+0

チュートリアルは何ですか?たぶん古いですね? – loganfsmyth

答えて

4

さてさて、それはそれは本当にあなたがconnectを使用していない以下の通りですチュートリアルのように見えるので、言うのは難しいのですが、ここではそれが動作するはずの接続使用例です。

function sendJSON(response, obj) { 
    response.writeHead(200, {'Content-Type':'application/json'}); 
    var objStr = JSON.stringify(obj); 
    response.end(objStr); 
} 

function get(path, cb) { 
    return function(req, res, next) { 
    if (req.method != 'GET' || req.url != path) return next(); 
    cb(req, res, next); 
    } 
} 

var connect = require('connect') 
var app = connect() 
    .use(connect.query()) 
    .use(get('/foo', function(req, res, next) { 
    sendJSON(res, {path: 'foo'}); 
    })) 
    .use(get('/bar', function(req, res, next) { 
    sendJSON(res, {parth: 'bar'}); 
    })) 
    .listen(3000); 
+0

はどうもありがとうございました。ここconnect.routerへの参照を持っているチュートリアルへのリンクです:。http://nodenerd.net/post/2178460914/leveraging-connect 。ありがとう! –

+0

は先に行って、Expressをインストールし、NPM急行インストール、およびコードが働いていた。私は知らない、接続のバージョンを明示して、パッケージまたは多分発現することができる接続に基づいています。とにかく、迅速に対応し、サンプルコードをありがとうございました。 –

+2

Expressはありませんconnectを使用すると、古い古いConnectチュートリアルを使用していただけです.Expressはこれと同様の構文を使用しています。 –

0

急行インストールし、少しコードを書き換える:

var express = require('express'); 
var util = require('util'); 

function sendjson(res,obj) 
{ 
    res.writeHead(200, { 
     'Content-Type': 'application/json', 
    }); 

    var objstr = JSON.stringify(obj); 
    util.debug('SENDJSON:' + objstr); 
    res.end(objstr); 
} 


var app = express(); 

app.get('/foo', function(req,res) { 
    sendjson(res, {path:'/foo'}); 
}); 

app.get('/bar', function(req,res) { 
    sendjson(res, {path:'/bar'}); 
}); 

app.listen(3000); 
util.debug('Server running at http://127.0.0.1:3000'); 
0

私は同じ質問がありました。 「クラウドでのモバイルアプリケーション開発の始まり」の著者Richard Rodgerは、ディスパッチモジュール(https://github.com/caolan/dispatch)を使用するか、古いバージョンのconnectをインストールすることを提案しました。

npm install git://github.com/senchalabs/connect.git#1.8.6

これが役に立ちます。 :)