2014-04-06 4 views
1

어떻게하면이 작업을 하나의 스크립트로 결합 할 수 있습니까? 나는 그것이 엉망이 된 콜백이라고 생각한다.파일을 읽고 http로 출력

이 코드를 사용하면 브라우저에 텍스트를 출력 할 수 있습니다.

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:1337/'); 
내가 텍스트 파일을 읽고 콘솔에 로그인 할 생각이 코드

.

fs = require('fs') 
fs.readFile('/etc/hosts', 'utf8', function (err,data) { 
    if (err) { 
    return console.log(err); 
    } 
    console.log(data); 
}); 

하지만 함께 본 실 거예요 작업, 왜 ????????????????? 도움 주셔서 감사합니다.

var http = require('http'); 
    http.createServer(function (req, res) { 

     fs = require('fs') 
     fs.readFile('/etc/hosts', 'utf8', function (err,data) { 
     if (err) { 
      return console.log(err); 
     } 
     console.log(data); 
     res.writeHead(200, {'Content-Type': 'text/plain'}); 
     res.end('Hello World\n'); 
    }); 


    }).listen(1337, '127.0.0.1'); 
    console.log('Server running at http://127.0.0.1:1337/'); 

답변

1

readFile 완료 후에 응답을 보내 주셔야합니다. 완료 콜백 (예 : readFile)의 응답을 작성하면됩니다.

http.createServer(function (req, res) { 

    fs.readFile('/etc/hosts', 'utf8', function (err,data) { 
     if (err) { 
      return console.log(err); 
     } 

     console.log(data); 
     res.writeHead(200, {'Content-Type': 'text/plain'}); 
     res.end(data); 
    }); 

}).listen(1337, '127.0.0.1'); 
관련 문제