节点JS调度无法GET错误

时间:2012-05-14 17:51:15

标签: node.js dispatch

我正在尝试使用调度,但是当我在broswer(http://127.0.0.1/user)中进行测试时,我收到以下消息

  

无法获取/用户/

我做错了什么?

  

127.0.0.1 - - [2012年5月14日星期一17:40:13 GMT]“GET / user / HTTP / 1.0”404 - “ - ”“Mozilla / 5.0(Windows NT 6.1; WOW64; rv:12.0) Gecko / 20100101 Firefox / 12.0“

http://www.something.com/api/ping - >工作正常

我的nginx配置文件也有此条目。

location /user/ {
      proxy_pass http://www.something.com:8181;
}

有任何建议我如何让调度员工作吗?

var dispatch   = require('connect')

function init() {
   var port = process.env.VCAP_APP_PORT || process.env.PORT || parseInt( process.argv[2], 10 )
   var staticFolder = __dirname + '/../site/public'

   console.log('port='+port+' static='+staticFolder)

   var server = connect.createServer(
   connect.logger(),
   connect.bodyParser(),
   connect.cookieParser(),
   connect.query(),
   connect.session({secret: config.secret}),

   dispatch({
            '/user': {
                     GET: api.get_user,
                     '/socialmsg/:when': {
                           POST: api.social_msg
                     }
             }
    }),

function(req,res,next){
  if( 0 === req.url.indexOf('/api/ping') ) {
    console.log(req.url+': '+JSON.stringify(req.query))
    res.writeHead(200)
    res.end( JSON.stringify({ok:true,time:new Date()}) )
  }
  else next();
},

 connect.static( staticFolder )
 )

 server.listen( port )
 }

1 个答案:

答案 0 :(得分:0)

根据https://github.com/senchalabs/connect,我会对您的代码进行重大修改,使其更具可读性,并且更明显地显示出错了什么。简而言之,我不相信静态目录似乎是按照需要配置的。我没有根据Connect模块找到createServer()方法(ExpressJS和http / https模块也有),特别是你提供的8个参数。

那就是说,我会坚持文档的约定如下:

var connect = require('connect'),
    http = require('http');

var staticFolder = __dirname + '/../sites/public';

var server = http.createServer(
    connect
        .use(connect.static(staticFolder))
        .use(connect.logger)
        .use(connect.bodyParser)
        // etc for each of the 'connect.' middleware you are using above
        .use(function (req, res) {
            // Request handling here
        });
);

server.listen(8181);

在空函数(req,res){}中,你想要把你拥有的所有东西都用于api / ping以及/ user请求的等价物。

在你的问题中,你提供了'connect.static()'作为createServer()的参数(即connect.createServer(connect.static)),而不是connect.use()的参数,中间件处理函数在模块中。