在express.js中使用hogan.js的正确方法是什么?在express.js + vhosts中使用hogan.js
我已尝试以下步骤:依次按
app.register('.hogan', hogan);
var hogan = require('hogan.js')
...
app.set('view engine', 'hogan');
但我结束了以下错误:
500 Error: Cannot find module 'hogan'
TJ推出一个名为巩固库.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
,Express不与霍根开箱(见:下面莱纳斯摹希尔的回答) - 什么似乎是造成
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
虚拟主机,或者当我切换虚拟主机声明的顺序周围有dataviz
虚拟主机宣告后datavizblocks
虚拟主机(当然,这进而导致了datavizblocks
问题虚拟主机)
道歉提前的时间为混乱的问题,但我很困惑,当我遇到这个问题,并没有预料到切换到Hogan
将与虚拟主机冲突。
啊!当然!很好的回答......有趣的是,这与我为了让Hogan与Backbone(拍额头)一起工作而做的非常相似......我稍后会核实...... – uglymunky 2012-03-16 18:55:05
看起来像别的东西是错的。我添加了这个代码,但是我仍然得到相同的错误:错误:当我尝试加载页面时找不到'hogan.js'模块 – uglymunky 2012-03-17 00:49:29
你确定已经安装了'hogan.js'吗?还有一个模块'hogan '在npm注册表中,我不确定你想要什么,但是'hogan.js'看起来更加活跃。 – 2012-03-17 10:24:02