node.js + express.js + dust.js问题

简单的问题是:为什么不用express.js运行dust.js?
我知道这不是正式支持,但dust.js甚至有我的node.js版本的问题。
由于require.path问题,节点甚至不会启动。

server:testapp treejanitor$ node --version v0.6.12 

将应用程序引擎设置为灰尘时出现问题。 ( app.js在快递中)

 var dust = require('dust'); ... app.set('view engine', 'dust'); 

我在这里展示控制台给你我简单的模块列表。
也有人search相同的问题可能会剪切/粘贴错误。

 server:hummr treejanitor$ npm list application-name@0.0.1 /Users/treejanitor/git/testapp/testapp ├── consolidate@0.3.0 extraneous ├── dust@0.3.0 ├─┬ express@2.5.8 │ ├─┬ connect@1.8.7 │ │ └── formidable@1.0.9 │ ├── mime@1.2.4 │ ├── mkdirp@0.3.0 │ └── qs@0.4.2 └─┬ jade@0.25.0 ├── commander@0.5.2 └── mkdirp@0.3.0 server:testapp treejanitor$ supervisor app.js DEBUG: Error: require.paths is removed. Use node_modules folders, or the NODE_PATH environment variable instead. at Function.<anonymous> (module.js:378:11) at Object.<anonymous> (/Users/treejanitor/git/testapp/testapp/node_modules/dust/lib/server.js:6:8) 

我尝试了以下尝试没有运气:
Dust.js从Node.js中的文件系统加载模板

注意:我尝试了alpha版本的express(3.0),这没有帮助。
这个例子中的整合.js和所有模块也一样。


为什么我对node + express + dust感兴趣的一些原因是:
LinkedInselectdustjs
Twitter的Bootstrap框架

我曾经讨论过使用Express@3.0在Node.js 0.6.x上通过consolidate.js模块来设置Dust.js。 你可以在这里阅读

但是,您可能需要使用LinkedIn的Dust.js分支 ,该分支支持Node.js 0.6.x以及其他改进。

Consolidate.js已经支持这个fork,但是你仍然需要使用Express@3.0来工作。

所以这就是诀窍 – 我想我会分享我发现的东西。
它需要find这个金块 – 如果你有兴趣,可以在页面中searchdust-x。 http://nodejs.debuggable.com/2012-03-23.txt

解决的事情,在您的快递应用程序

 cd node_modules git clone git://github.com/laurie71/dust-x.git git clone https://github.com/caolan/dustjs.git 

dust.js的分叉解决了node.js的require.paths问题
https://github.com/caolan/dustjs

灰尘的“包装”使其成为模板引擎
(您仍然需要将dust.js作为模块安装)
https://github.com/laurie71/dust-x

示例用法
https://gist.github.com/2174537

最重要的一点:

 var dustx = require('dust-x'); ... // Configuration app.configure(function(){ app.set('views', __dirname + '/views'); app.register('.dust', dustx/*({})*/); app.set('view engine', 'dust'); // app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express['static'](__dirname + '/public')); }); 

顺便说一句,我想我可以手动修复server.js中的dust.js问题,但是我想给那些真正分叉dust.js的人提供荣誉,并且让解决scheme公开。


PS:我还是相当新的张贴在stackoverflow,所以如果我违反了一些礼仪只是让我知道。 我在FAQ中读到,鼓励回答你自己的问题,所以我想我会试试看。

特别是,我知道我的格式可能很弱。 在答案中,我实际上首选显示完整的链接,而不是指导build议的URLembedded,因为它揭示了包含网站的结构。 随着网站的URL吸收在你的大脑中,它给了你更多的机会参考下一个复飞。 而且URL也相当短。 ; ^) build议非常感谢

通常格式化“控制台”的方式是什么? 作为代码?

这可能是一个与node.js和express.js版本的问题..我使用节点v0.10.9和expressionv3.0.x,他们对我很好。 为了集成dust.js与express.js和node.js,我发现这个github回购是一个有用的资源,以帮助您开始使用: https : //github.com/chovy/express-template-demo (它使用linkedin dust.js的fork)