2012-05-14 4 views
1

내가 파견을 사용하려고하지만거야 내가이 broswer에서 테스트를 수행 할 때 (http://127.0.0.1/user) 나는 다음과 같은 메시지가노드 JS 파견 오류 얻을 수

얻을 수 없다/사용자/

무엇이 잘못 되었나요?

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) 게코/20100101 파이어 폭스/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) 
} 
+0

더 많은 정보가 없으면 코드에 많은 문제가 있습니다. 예를 들어, dispatch = require ('connect')를 설정했지만 모든 곳에서 "dispatch"대신 "connect"변수를 사용하십시오. –

답변

0

https://github.com/senchalabs/connect 당, 나는 크게 무엇이 잘못되었는지에 관해서는 좀 더 읽기 쉽고 더 분명하게 코드를 리팩토링 것입니다. 요컨대, 나는 정적 디렉토리가 원하는대로 구성되는 것 같지 않습니다. Connect 모듈 (ExpressJS 및 http/https 모듈에도 해당)에 따라 createServer() 메소드를 찾지 못했습니다. 특히 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, 고해상도) {} 당신이뿐만 아니라 API/핑 위해 가지고있는 모든 물건을 넣을 것 :

다음과 같이 나는 문서의 규칙을 스틱 것 말했다/user 요청과 동일한 의미로 사용됩니다.

귀하의 질문에 connect.use(), 미들웨어 처리에 대한 인수가 아니라 createServer()에 대한 인수로 'connect.static()'(즉 connect.createServer (connect.static) 함수를 호출합니다.