2016-04-21 1 views
0

私はlocalhost:8080上で実行しているサーバーを持っている、と私のファイルは次のように配置されている:は、HTTPを使用してローカルファイルtest.txtのを取得できません:// localhostを:8080/test.txtの

/test 
    server.js 
    chatroom.html 
    test.txt 

サーバー.js:私のブラウザでそう

var express = require("express"); 
var app = express(); 
app.get("/", function(request, response) { 
    response.sendFile(__dirname + "/chatroom.html"); 
}); 
app.listen(8080); 

私はhttp://localhost:8080に行くとき、私はchatroom.htmlうまく務めます。

私がいる問題:

をしかし、私はhttp://localhost:8080/chatroom.htmlに行くとき、それは私が「/chatroom.htmlを得ることができません」と表示さ

そして、私がhttp://localhost:8080/test.txtに行けば同様に、それは私を示してい"Can not GET/chatroom.html"

ここで何がうまくいかないのか分かりませんが、何か助けになるでしょう!

答えて

2

Expressでは、ルートパス "/"を1つだけ定義しました。他のファイルを利用できるようにするには、app.get()も呼び出す必要があります。

また、これらの静的資産をディレクトリに配置して、use express.staticに割り当てることができます。

+0

私がこれを理解しているかどうか教えてください。ブラウザに 'http:// localhost:8080/test.txt'を入力すると' file:/// 'と入力するのと似ていると私は考えていました。 。 。/test/test.txt'を実行します。ただし、 'localhost:8080'に相対的なパスになります。実際に 'http:// localhost:8080/test.txt'と入力するとGETリクエストがサーバーに送信されますが、処理方法はわかりません。 – digglemister

+1

ApacheやNginxのようなWebサーバーを使用している場合、通常は静的ファイルが存在する場合はそのファイルを提供し、要求されたパスがファイルと一致しない場合はPHPやnode.jsのようなバックエンドにのみアクセスします。しかし、ポート8080に接続すると、ノード&Expressに直接アクセスしています.Expressは、あなたが登録したパスとミドルウェアの登録について知っています。 –