2017-05-03 12 views
0

node.js에 새롭고 아래 링크의 기본 자습서를 따르고 있습니다. https://www.tutorialspoint.com/nodejs/nodejs_web_module.htmNode.JS 기본 웹 페이지 호스팅 오류 : ENOENT

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

// Create a server 
http.createServer(function (request, response) { 
    // Parse the request containing file name 
    var pathname = url.parse(request.url).pathname; 

    // Print the name of the file for which request is made. 
    console.log("Request for " + pathname + " received."); 

    // Read the requested file content from file system 
    fs.readFile(pathname.substr(1), function (err, data) { 
     if (err) { 
     console.log(err); 
     // HTTP Status: 404 : NOT FOUND 
     // Content Type: text/plain 
     response.writeHead(404, {'Content-Type': 'text/html'}); 
     }else { 
     //Page found  
     // HTTP Status: 200 : OK 
     // Content Type: text/plain 
     response.writeHead(200, {'Content-Type': 'text/html'});  

     // Write the content of the file to response body 
     response.write(data.toString());  
     } 
     // Send the response body 
     response.end(); 
    }); 
}).listen(8081); 

// Console will print the message 
console.log('Server running at http://127.0.0.1:8081/'); 

2는 이후에 index.html을 상기 server.js 완전히 동일한 파일을 생성. 그럼 내가

node server.js

오류 메시지가 표시되지 않습니다 그것을 실행하려고하면,하지만 난 내 브라우저에서 페이지에 액세스하려고 할 때이 연결되지 않고 오류가 콘솔에 표시됩니다.

도움을 주시면 감사하겠습니다. 주어진 코드에서

Server running at http://127.0.0.1:8081/

Request for/received.

{ Error: ENOENT: no such file or directory, open '' errno: -2, code: 'ENOENT', syscall: 'open', path: '' }

+1

튜토리얼 http : //127.0.0.1 : 8081/index.htm에 지정된대로 URL을 사용 했습니까? 특히'index.htm' 부분이 있습니다. – Sirko

+0

외국 사이트에 대한 링크가 아닌 질문에 항상 관련 코드를 포함해야합니다. –

답변

4

당신은이 : 경로가

// Print the name of the file for which request is made. 
console.log("Request for " + pathname + " received."); 

// Read the requested file content from file system 
fs.readFile(pathname.substr(1), function (err, data) { 

때문에 /pathname.substr(1) 빈 문자열 발생합니다. 그리고 이름이없는 파일이 없기 때문에 fs.readFile은 읽을 파일을 찾지 못해 어떤 결과가 ENOENT 오류로 나타납니다.

주어진 코드는 빈 문자열을 index.html으로 자동 해석하지 않습니다.

브라우저에서 http://127.0.0.1:8081/index.html을 사용해야합니다. 또는 빈 문자열을 index.html으로 해석하도록 코드의 논리를 변경하십시오.

+0

이것은 많은 의미가 있습니다. 호스트 된 페이지에 액세스하려면 로컬 호스트와 포트 번호 만 필요하다고 가정했습니다. 결국 index.html에 넣지 않았습니다. 이 또한 인덱스 파일에 대한 참조를 본 적이없는 이유에 대한 답변입니다. – Eric