Как правильно использовать hogan.js с express.js?
Я пробовал следующее:
var hogan = require('hogan.js')
...
app.set('view engine', 'hogan');
с последующим
app.register('.hogan', hogan);
Но я получаю следующую ошибку:
500 Error: Cannot find module 'hogan'
TJ выпустил библиотеку под названием consolidate.js (https://github.com/visionmedia/consolidate.js), но у меня возникли проблемы при ее работе с Express 2.5.8. Потратив день на попытки выяснить это, я также натолкнулся на библиотеку hulk-hogan.js (https://github.com/quangv/hulk-hogan) и другую, называемую hogan-express (http://allampersandall.blogspot.com/2011/12/hoganjs-expressjs-nodejs.html). Но мне действительно все это нужно?
Если решение не может быть таким простым, как установка движка шаблонов с помощью app.set () и app.register (), было бы здорово, если бы кто-то мог помочь мне понять почему. Я использую Hogan на клиенте, и он отлично работает, было бы намного лучше, если бы я мог также использовать его на сервере.
ОБНОВЛЕНИЕ: Оказывается, здесь есть две проблемы.
- Хотя это не вызывает
500 error
, Экспресс не работает с Хоганом из коробки (см. Ответ Линуса Г Тиля ниже)
- Кажется, что причина
500 error
в том, что я использую виртуальный хост, и когда я вызываю res.render (), мой вызов res.render () фактически вызывает res.render () другого виртуальный хост на моем же сервере.
Добавление полного дампа ошибок Express. Похоже, мое приложение ('dataviz') пытается использовать вызов рендеринга из другого приложения ('datavizblocks')? Опять же, два приложения являются виртуальными хостами на одном сервере.
dataviz 8000
Error: Cannot find module 'hogan.js'
at Function._resolveFilename (module.js:332:11)
at Function._load (module.js:279:25)
at Module.require (module.js:354:17)
at require (module.js:370:17)
at View.templateEngine (/localhost/datavizblocks/node_modules/express/lib/view/view.js:134:38)
at Function.compile (/localhost/datavizblocks/node_modules/express/lib/view.js:68:17)
at ServerResponse._render (/localhost/datavizblocks/node_modules/express/lib/view.js:417:18)
at ServerResponse.render (/localhost/datavizblocks/node_modules/express/lib/view.js:318:17)
at /localhost/dataviz/routes/section.js:325:7
at callbacks (/localhost/dataviz/node_modules/express/lib/router/index.js:272:11)
dataviz 8000
Error: Cannot find module 'hogan.js'
at Function._resolveFilename (module.js:332:11)
at Function._load (module.js:279:25)
at Module.require (module.js:354:17)
at require (module.js:370:17)
at View.templateEngine (/localhost/datavizblocks/node_modules/express/lib/view/view.js:134:38)
at Function.compile (/localhost/datavizblocks/node_modules/express/lib/view.js:68:17)
at ServerResponse._render (/localhost/datavizblocks/node_modules/express/lib/view.js:417:18)
at ServerResponse.render (/localhost/datavizblocks/node_modules/express/lib/view.js:318:17)
at /localhost/dataviz/routes/section.js:325:7
at callbacks (/localhost/dataviz/node_modules/express/lib/router/index.js:272:11)
500 error
исчезает, когда я закомментирую datavizblock
vhost или когда я переключаю порядок объявлений vhost, чтобы объявить dataviz
vhost после datavizblocks
vhost (конечно, это вызывает проблемы для datavizblocks
vhost)
Заранее извиняюсь за запутанный вопрос, но я был очень смущен, когда столкнулся с этой проблемой, и никогда не ожидал, что переход на Hogan
будет конфликтовать с виртуальным хостингом.