2014-04-09 10 views
6

Mam serwer nodejs uruchomiony ze stroną klienta zamkniętą w folderze klienta, aby ułatwić zarządzanie strukturą folderów dla index.html. Wtedy linki i skrypty nie powinny ładować żadnego problemu.Nodej Index.html Obciążenia ale linki i skrypty 404

client folder 
    /index.html 
    /style.css 
    /script.js 
closer folder 
    /closure 
    /etc. 
app.js 
package.json 
utility.js 

W moich app.js złożyć Mam normalną

app.get ('/', function (req,res) { 
res.render('index.html'); 
}); 

i kiedy uruchomić i przejść do lokalnego portu hosta obciążeń plików, ale kiedy otworzyć konsolę chrom, widzę, że do pliku index.html nie można załadować żadnego ze skryptów, nie znaleziono błędu 404. Zauważyłem, że w wielu aplikacjach ekspresowych nie wydaje się być wspólny wzór czegoś wzdłuż linii

this app.set('views', __dirname + '/client'); 

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

this app.use('client', express.directory('client')); 

ale nie widzę wyjaśnienia na temat różnicy między app.use i app.set, ani dobre wyjaśnienie, najlepiej mogłem znaleźć był

app.set („widoki”, __dirname + „/ views”): Stosować ./views jako domyślny ścieżka do szablonów po stronie klienta

od Alex Young's article, ale nawet to było trochę skąpe i suche dla mnie, mam nadzieję na nieco głębsze wyjaśnienie, dlaczego plik indeksu może nie być w stanie załadować łącza na tym samym poziomie katalogu, co on.

<link rel="stylesheet" type="text/css" href="style.css" /> 

Patrzę na to i nie mogę znaleźć problemu.

Odpowiedz

5

Z odpowiedzi Express-js can't GET my static files, why? sugeruję:

app.use("/client", express.static(__dirname + '/client')); 

Jest to konieczne, ponieważ Twój:

app.get ('/', function (req,res) { 
res.render('index.html'); 
}); 

jest tylko zajęcie, co się dzieje, gdy ktoś idzie do / i mówiąc, że powinien index.html być obsłużonym. To samo w sobie nie służy niczemu.

-1

wystarczy uruchomić serwer z katalogu głównego projektu. , który rozwiąże problem, ponieważ użyłeś względnego adresowania.