2016-04-21 4 views
0

Ich habe einen Server bekam auf localhost:8080 läuft, und meine Dateien sind wie folgt angeordnet:Kann nicht lokale Datei test.txt mit http erhalten: // localhost: 8080/test.txt

/test 
    server.js 
    chatroom.html 
    test.txt 

Server Js:

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

Also in meinem Browser, wenn ich gehe zu http://localhost:8080 ich chatroom.html ganz gut bedient wird.

Das Problem, das ich habe:

Aber wenn ich zu http://localhost:8080/chatroom.html gehen es zeigt mir

Und ebenso „nicht /chatroom.html bekommen kann,“ wenn ich zu http://localhost:8080/test.txt gehen es mir zeigt, "Kann nicht bekommen/chatroom.html"

Ich verstehe nicht, was hier schief läuft, jede Hilfe wäre willkommen!

Antwort

2

Sie haben nur einen Pfad für Express definiert, den Stammpfad "/". Wenn Sie andere Dateien zur Verfügung haben möchten, müssen Sie auch app.get() aufrufen.

Oder Sie können diese statische Assets in ein Verzeichnis und use express.static, um sie zu dienen.

+0

Ok, kannst du mir sagen, ob ich das verstehe? Ich hatte anscheinend falsch gedacht, dass die Eingabe von "http: // localhost: 8080/test.txt" in den Browser ähnlich wäre wie die Eingabe in 'file: ///. . ./test/test.txt', außer es wäre nur ein Pfad relativ zu 'localhost: 8080'. Wollen Sie damit sagen, dass die Eingabe von 'http: // localhost: 8080/test.txt' eine GET-Anfrage an den Server sendet, den er nicht verarbeiten kann? – digglemister

+1

Richtig. Wenn Sie einen Webserver wie Apache oder Nginx verwenden, werden diese normalerweise so konfiguriert, dass sie statische Dateien bereitstellen und nur auf ein Backend wie PHP oder node.js zugreifen, wenn der angeforderte Pfad nicht mit einer Datei übereinstimmt. Wenn Sie jedoch eine Verbindung zu Port 8080 herstellen, gelangen Sie direkt zu Node & Express, und Express weiß nur über die Pfade, über die Sie darüber berichten, und über die Middleware, die Sie registrieren. –