javascript connect.router错误以及如何在node中重写它

6pp0gazn  于 2023-05-27  发布在  Java
关注(0)|答案(2)|浏览(114)

我正在阅读RichardRodger的“移动的”,我发现一些示例代码使用了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);

大多数关于node的书都包含了不能工作的代码,对于现在开始学习的人来说,一分钟后又不学习是非常令人沮丧的。开源框架经历了惊人的快速变化!我只需要学会怎么用正确的方式来做。有什么想法吗

g6baxovj

g6baxovj1#

是这样吗?

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

x7yiwoj42#

您安装的connect模块比本书更新。试试这个博客的解决方案:http://blog.riff.org/2012_04_09_missing_the_connect_router_middleware_for_nodejs
或者通过run命令使用connect-router模块:npm install connect-route或从github克隆:git clone git://github.com/baryshev/connect-route.git到您的node_module目录中,然后通过以下方式进行安装:cd connect-route --> npm install -d

相关问题