2012-01-11 12 views
16

Grałem trochę z Node.js. Niedawno zacząłem bawić się programem Express i konfigurowałem podstawową aplikację. Chciałem użyć Handlebars jako mojego mechanizmu wyświetlania szablonów, ale trafiam w ścianę - nie udało mi się zlokalizować widoku "index.html"NodeJS + Express + Handlebars - nie udało się zlokalizować widoku "index.html"

Mam index.html w tym samym katalogu, co app.js i tak myślę, że poniższy kod nie stanowiłby problemu z lokalizacją index.html ...

Szukałem, ale wydaje się, że obszerne przykłady czegokolwiek oprócz jade są rzadkie ... Ktoś ma doświadczenie z tym zestawem?

Z góry dziękuję!

var express = require('express') 
    , app = express.createServer(); 

app.configure(function(){ 
    app.set('view engine', 'handlebars'); 
    app.set("view options", { layout: false }) 
}); 



app.get('/', function(req, res){ 

    var data = { 
     name: "Ford Prefect", 
     home: "a small planet somewhere in the vicinity of Betelgeuse" 
    } 

    res.render('index.html', data); 
}); 

app.listen(3000); 

Aktualizacja:

mi brakuje:

app.set('views', __dirname + '/'); 
app.register('.html', require('handlebars')); 

w moim config ... wydaje się, że rejestr '.html' jest dość ważne, gdyż określa handlebars association with .html ...

Mam nadzieję, że to pomoże komuś ...

Ponieważ jestem NOOB, nie mogę odpowiedzieć na moje pytanie przez 7 godzin, ale jeśli ktoś potrzebuje pełnego przykładu pracy, mogę wysłać jutro ...

+4

To "Ford Prefect" – fent

+1

Możesz rozważyć nazwanie swoich plików .handlebars zamiast .html, aby było oczywiste, że nie jest to zwykły plik html. Wkrótce [.hbs] (https://github.com/wielats/handlebars.js/issues/174) może również działać? – MyGGaN

Odpowiedz

17

Domyślnie będzie wyglądał w folderze o nazwie views z katalogu, w którym znajduje się skrypt. Jeśli używasz innego katalogu, musisz go podać.

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

Express powinien również podać więcej informacji o tym, gdzie próbuje znaleźć widok, co powinno pomóc w dokładnym ustaleniu, gdzie się znajduje.

+0

Dokładnie. Prawdę powiedziawszy, ten wniosek został osiągnięty w dwóch krokach dla mnie - linii 1, a następnie linii 2 w aktualizacji ... Najpierw odkryłem linię 1, która doprowadziła mnie do spotkania Błąd: Nie można znaleźć modułu "html" który , jak to się dzieje, linia 2 rozwiązana :) Mam nadzieję, że moja głupota komuś pomaga. – mattezell

Powiązane problemy