5

The quick question: why won't express.js run with dust.js?
I know it's not officially supported, but dust.js even has issues with my node.js version.
Node won't even start due to require.path issues.

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

I get issues when setting the app engine to dust. (app.js in express)

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

I'm showing the console here to give you my simple list of modules.
Also someone searching for the same problem might cut/paste the error.

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)

I tried the following attempt with no luck:
Dust.js load template from filesystem in Node.js

NOTE: I tried the alpha version of express (3.0) which didn't help.
Same goes for consolidate.js and all the modules in that example.


Some reasons why I am interested in node + express + dust:
LinkedIn picks dustjs
Twitter's Bootstrap framework

4

3 回答 3

5

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

但是,您可能想要使用LinkedIn 的 Dust.js 分支,它支持开箱即用的 Node.js 0.6.x,并进行了其他改进。

Consolidate.js已经支持该分叉,但您仍然需要Express@3.0工作。

于 2012-06-07T04:53:19.677 回答
3

所以这是诀窍 - 我想我会分享我发现的东西。
它需要找到这个金块 - 如果您有兴趣,请在页面中搜索dust-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 并公开解决方案的人表示敬意。


PS:我对在 stackoverflow 上发帖还是很陌生,所以如果我违反了一些礼仪,请告诉我。我在常见问题解答中读到鼓励回答您自己的问题,所以我想我会尝试一下。

特别是,我知道我的格式可能很弱。在答案中,我实际上更喜欢显示完整链接而不是指南建议的 URL 嵌入,因为它揭示了包含站点的结构。随着站点 URL 浸入您的大脑,它为您提供了更多机会将该站点作为下一次复飞的参考。URL也相当短。;^)非常感谢您的建议

“控制台”的典型格式是什么?作为代码?

于 2012-05-25T07:13:02.617 回答
2

这可能是 node.js 和 express.js 版本的问题。我使用的是 node v0.10.9 和 express v3.0.x,它们对我来说效果很好。为了将dust.js与express.js和node.js集成,我发现这个github repo是一个有用的资源来帮助你开始: https ://github.com/chovy/express-template-demo (它使用dust.js 的linkedin 分支)

于 2013-09-08T16:39:04.397 回答