2010-11-25 8 views
1

일부 간단한 데이터를 전송할 때 GET 변수를 사용하려고하지만 어떤 이유로 인해 잘못하고 있습니다.Node.js 및 정의되지 않은 속성

내 코드는 매우 간단합니다. Node.js HTTP & URL 라이브러리를 사용합니다. 다음 코드를 실행하려고하면 TypeError가 발생합니다. 정의되지 않은 'foo'속성을 읽을 수 없습니다. 나는 왜 foo가 URL에 전달 되었기 때문에 나는 왜 이해하지 못한다. q object에 console.log를하면, foo 값이있다.

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}) 
    var vars = url.parse(req.url,true) 
    var q = vars.query 
    if(q.foo) { 
     res.end('yay') 
    } else res.end('snif') 
}).listen(8000,"127.0.0.1") 

답변

4

귀하의 문제가 foo이 존재하지 않는다고 아니다, 문제는 q 자체가 undefined 것입니다.

어디서 나왔습니까? 그런데 우리는 ... 우리는 브라우저 요청 것을 알아

var http = require('http'); 
var url = require('url'); 

http.createServer(function (req, res) { 
    console.log(req.url); 

    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    var vars = url.parse(req.url, true); 
    var q = vars.query; 
    if(q && q.foo) { // this time check that q has a value (or better check that q is an object) 
     res.end('yay'); 

    } else { 
     res.end('snif'); 
    } 
}).listen(8000,"127.0.0.1"); 

... 그것을 정리하고 일부 로그를 추가하는 경우 :

/bla?foo=1 
/favicon.ico 

을 거기 간다! 물론 favicon 요청은 GET 매개 변수가 아니기 때문에 qundefined이 아닌지 확인하기 만하면됩니다.

+0

아 물론 물론 .. favicon 요청. 그걸 생각하지 않았어. 나는 Node.js로 많은 서버 측 자바 스크립트를 아직 수행하지 못했다. 그래서이 작은 잡다리는 나를 물고있다 :/ – Mike

+0

나는 switch 문과 비슷한 것을 가지고있다. 'url.parse'는 switch 문 외부에 있었고 일부 경우 (xml 형식과 같은)는 params를 반환하지 않았습니다. 결과적으로'url.parse'는 이러한 경우에 정의되지 않았습니다. – SnapShot

+0

'/ favicon.ico '는 항상 기본값으로 반환됩니까? 그것을 피할 수있는 방법이 있습니까? – hyprstack

관련 문제