2015-05-29 7 views
0

Я следую учебным пособиям в «Веб-разработке O'Reilly с узлом & Экспресс» Итана Брауна.NodeJs с Express и Handlebars - handlebars.engine undefined

Они используют рули в качестве механизма просмотра.

Вот мой код:

var express = require ('express'), 
    handlebars = require('express3-handlebars'), 
    app = express(); 

handlebars.create({ defaultLayout: 'main' }); 
app.engine('handlebars', handlebars.engine); 

Проблема, которую я имею что handlebars.engine не определен, в результате чего «функции обратного вызова ожидается» ошибка при запуске приложения.

Я пробовал поиск в Интернете без везения.

Это какой-то старый синтаксис с рулями? Мои пакеты установлены отлично, и я попытался переустановить их.

Есть ли исправление/обновленный код для этого?

ответ

1

Вы должны получить двигатель от объекта, который вы получили от create() -call!

Как это: var expHbs = require('express-handlebars'); var handlebars = expHbs.create({ defaultLayout: 'layout', extname: '.hbs', helpers: handlebarsHelpers }); app.engine('.hbs', handlebars.engine); app.set('view engine', '.hbs');

Просто сказать: express3-handlebars получил переименован в express-handlebars. Вы должны рассмотреть возможность переключения.

+0

Большое спасибо. На самом деле это было сильно озадачено. Для целей этой книги я собираюсь использовать старый, но у меня будет игра с переименованной. Все ли методы и синтаксис одинаковы? Это просто имя изменилось? Если это так, я, вероятно, сейчас сделаю переключатель – Asher

+1

. Большинство вещей одно и то же, но некоторые функции, такие как 'res.status (404) .end();' больше не разрешены ('req.sendStatus (404);' теперь является правильным) Вот журнал изменений, так как переименован в 'express3-handlebars': https://github.com/ericf/express-handlebars/blob/master/HISTORY.md#100-2014-08 -07 – NeedCoffee