2015-06-09 5 views
0

Я работаю с библиотеками Express 4.0 и Express3-handlebars для NodeJS.Экспресс 4.0 Не удалось просмотреть вид в каталоге «/ views»

Вот конфигурация

app.set('views', path.join(__dirname, 'views/')); 
app.engine('hbs', hbs({defaultLayout: 'main', extname: '.hbs'})); 
app.set('view engine', 'hbs'); 

contact.html находится в каталоге просмотров

app.get('/', function(req, res) { 
res.render("contact"); 
}); 

Это ошибка, я получаю:

Error: Failed to lookup view "contact" in views directory "/Users/max23/Desktop/Node/views/" 

Я провел более часа пытаясь исправить это безрезультатно. Что не так с кодом?

ответ

0

Вы используете библиотеку шаблонов Handlebars, поэтому ваши представления должны иметь расширение .hbs, а не .html. Измените contact.html на contact.hbs и сделайте это со всеми вашими шаблонами. Также исправьте эту строку

app.engine('hbs', hbs({defaultLayout: 'main.hbs', extname: '.hbs'})); 
+0

Спасибо! Это сработало отлично! – user3739383

+0

обратите внимание на то, как имя движка и расширение должны быть одинаковыми ... замечены в другом потоке тоже ... немного смутили меня, и я не могу быть единственным (это похоже только на идентификатор!) –

0

Как вы используете hbs в качестве вашей системы просмотра, вы должны использовать расширение .hbs для ваших файлов вида. В нем не для поиска мнения, потому что сво HTML, и его ищет contact.hbs

лично я не имею большой опыт работы с библиотекой руля, но я предлагаю вам изменить расширение contact.html на .hbs и попробовать снова

0

В пути представления настроек есть что-то не так. Попробуйте изменить линию

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

по

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

Если проблема не устранена, показать свою структуру папок.