2013-10-27 16 views
5

Próbuję uruchomić moją pierwszą aplikację ekspresową, ale nie mogę wyświetlić strony internetowej. Mam następujący kod:Nie można uzyskać pliku index.html w Express w aplikacji Nodejs

var fs = require("fs"); 
var config = JSON.parse(fs.readFileSync("files/config.json")); 
var host = config.host; 
var port = config.port; 
var express = require("express"); 

var app = express(); 

app.use(app.router); 
app.use(express.static(__dirname + "/public")); 

app.get("/", function(request, response){ 
    response.send("hello!"); 
}); 

app.listen(port, host); 
console.log("Listening on port" + port); 

Oto mój drzewa katalogu

nodejs/ 
    js/ 
     javascript.js 
    public/ 
     index.html 

wiem, że serwer działa bo dostanę "Hello!" odpowiedź w przeglądarce, gdy biegnę 127.0.0.01:1337

Ale kiedy Próbuję wpisać stronę 1227.0.0.1:1337/index.html, otrzymuję Cannot GET /index.html wyświetlany w przeglądarce

Więc jestem zgadywanie, że coś jest nie tak z wartością name w metodzie get, ale nie może dowiedzieć się, co to jest i jak to naprawić.

Odpowiedz

10

Twoja aplikacja będzie kierować tylko żądaniami stron skonfigurowanymi w czasie Twojego połączenia app.use(app.router). Więc kolejność połączeń app.use być jedną z następujących czynności:

ekspresowe 3

app.use(express.static(__dirname + "/public")); 
app.use(app.router); 

__dirname jest katalog, który znajduje się skrypt wykonywany w tak dlatego, że mieszka w katalogu js że to peer to public swoje Kod musiałyby być:

app.use(express.static(__dirname + "/../public")); 
app.use(app.router); 

Express 4

Express 4 removes the need to manually do app.use(app.router). Z Express 4 wystarczy:

app.use(express.static(__dirname + "/../public"));

+0

Ekspresowy przykład 4 pracował dla mnie. 'app.use (app.router);' podaje błąd, który jest przestarzały –

Powiązane problemy