2016-06-30 5 views
0

私はノードJSを初めて使い、自分のWebサーバを作成して、自分のLinuxサーバ(Raspberry Pi)に自分の非常に基本的なWebサイトをホストしようとしています。次のコードはindex.htmlを表示しますが、users.htmlファイルは表示しません。私が間違っていることを指摘してください。このフォルダにindex.htmlファイルとusers.htmlファイルがあります。 (Sidenote:私はCSS &がまだ実装されていないことを知っています;私はこのWebサーバーを書く冒頭にあります)。ノードjs Webサーバーが余分なページで動作しないのはなぜですか?

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

//404 response 
function send404Response(response){ 
     response.writeHead(404, {"Content-Type": "text/plain"}); 
     response.write("Error 404: Page not found!"); 
     response.end(); 
} 

//Handles user request 
function onRequest(request, response){ 
     if(request.method == 'GET' && request.url == '/'){ 
       response.writeHead(200, {"Content-Type": "text/html"}); 
       fs.createReadStream("./index.html").pipe(response); 
     }else if(request.method == 'Get' && request.url == '/users'){ 
       response.writeHead(200, {"Content-Type": "text/html"}); 
       fs.createReadStream("./users.html").pipe(response); 
     } 
     else{ 
       send404Response(response); 
     } 
} 

http.createServer(onRequest).listen(8884); 
console.log("Server is running..."); 
+0

'request.method == 'Get'' - すべての大文字で' GET'する必要があります。 – brandonscript

答えて

0

2番目のif文に入力ミスがあります。

else if(request.method == 'Get' && request.url == '/users'){ 

ではなく、サーバーが "GET" メソッドを見ているなら、

else if(request.method == 'GET' && request.url == '/users'){ 

HTTPメソッドは常に大文字でなければなりません。 URLが最初のIF文と一致せず、メソッドが2番目のIF文と一致しないため、elseに渡され、404が見つかりません。

関連する問題