2014-10-19 13 views
6

Podążam za podstawowym układem aplikacji, który otrzymujesz z Express Generatora i próbujesz skonfigurować go dla Handlebars.Nieudane wyszukiwanie w katalogu z Express Handlebars

Snippet:

var exphbs = require('express-handlebars'); 

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views/')); 

app.engine('handlebars', exphbs({defaultLayout: 'main'})); 
app.set('view engine', 'handlebars'); 

Wszystko jest dobrze dopóki nie spróbować i zmienić rozszerzenie na kierownicy do .hbs następująco:

app.engine('handlebars', exphbs({defaultLayout: 'main', extname: '.hbs'})); 

(i zmienić nazwy plików oczywiście).

To skutkuje:

Error: Failed to lookup view "error" in views directory

Szukałem w function ExpressHandlebars(config) w wyraźnej-handlebars.js źródła i robi próbę ustalenia extname apppropriately.

Co robię źle?

Odpowiedz

18

Nieco intuicyjne ustawienie nazwy rozszerzenia nie wystarczy.

Wymagana konfiguracja jest:

app.engine('hbs', exphbs({defaultLayout: 'main', extname: '.hbs'})); 
app.set('view engine', 'hbs'); 
+3

dla nikogo innego, że nie widzi go w pierwszej chwili: Nazwa silnik musi być taka sama jak rozszerzenie pliku. Czy ktoś wie, dlaczego? – musicin3d

+0

@ musicin3d to z pewnością jest jak błąd w Expressie. – bcmcfc

+0

Znalazłem to: https://github.com/strongloop/express/blob/e5ec966b2f068e935ea1b33374fac133dd06cdc8/lib/application.js#L262 – bcmcfc

Powiązane problemy