node.js - Node JS 调度无法获取错误

标签 node.js dispatch

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

Cannot GET /user/

我做错了什么?

127.0.0.1 - - [Mon, 14 May 2012 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 )
 }

最佳答案

根据 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() 的参数。

关于node.js - Node JS 调度无法获取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10588489/

相关文章:

Javascript方法调度过程

swift - UI 更新不适用于 urlSession downloadTask didWriteData

javascript - React Redux - 调度检索输入值

javascript - 如何在 javascript 函数对象中测试是否调用了无效方法?

node.js - Grunt 突然停止工作

Javascript unicode 到 ASCII

javascript - Webpack 捆绑许可证合规性?

javascript - 在不使用 fs 模块的情况下在 nodejs 中提供 html 文件

ios - 如何正确多线程? UIAlertView不显示,只灰屏

laravel-5 - 有什么方法可以在laravel 5中发送闭包?