0

我正在阅读 Richard Rodger 的“Beginning Mobile Application Development in the Cloud”,一些示例代码使用了 Connect,我发现它不再允许直接对路由器层进行请求处理。这是一个给出“没有方法路由器”错误的示例:

var common = require('./common.js');
var util    = common.util;
var connect = common.connect;
var mongo   = common.mongo;


var server = connect.createServer( 
  connect.router(function(app){ //gives the error: "has no method 'router'

    // POST {id:<string>}
    app.post('/todo/stats/init',function(req,res,next){
      common.readjson(req,function(json){
        common.sendjson(res,{ok:true,id:json.id});
      })
    })

    // POST {time:<UTC-millis>,total:<todos>,done:<done todos>}
    app.post('/todo/stats/collect/:id',function(req,res,next){
      var id = req.params.id;
      common.sendjson(res,{ok:true,id:id});
      common.readjson(req);
    })
  })
);


mongo.init('todo','localhost');
mongo.open()

server.listen(3000);

大多数关于节点的书籍都包含不起作用的代码,对于现在开始学习并在一分钟后取消学习的人来说非常令人沮丧。开源框架经历了惊人的快速变化!我只需要学习如何以正确的方式做到这一点。有什么想法吗?

4

2 回答 2

0

是这样吗?

var common = require('./common.js');
var util    = common.util;
var connect = common.connect;
var mongo   = common.mongo;

connect.createServer(function (req, res, next) {

    app.post('/todo/stats/init',function(req,res,next){
      common.readjson(req,function(json){
        common.sendjson(res,{ok:true,id:json.id});
      })
    })


    app.post('/todo/stats/collect/:id',function(req,res,next){
      var id = req.params.id;
      common.sendjson(res,{ok:true,id:id});
      common.readjson(req);
    })

        mongo.init('todo','localhost');
        mongo.open();


}).listen(3000);
于 2012-10-24T21:25:58.570 回答
0

您安装的连接模块比本书最新。从这个博客尝试解决方案:http: //blog.riff.org/2012_04_09_missing_the_connect_router_middleware_for_nodejs

或通过运行命令使用连接路由器npm install connect-route模块: 或从 github 克隆:git clone git://github.com/baryshev/connect-route.git到您的node_module目录,然后通过以下方式安装:cd connect-route-->npm install -d

于 2012-12-30T23:33:41.937 回答