5

簡単な質問: なぜ 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');

ここにコンソールを表示して、モジュールの簡単なリストを示します。
また、同じ問題を探している人がエラーをカット/ペーストするかもしれません。

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)

私は次の試みを試みましたが、うまくいきませんでした:
Node.js のファイルシステムからの Dust.js ロード テンプレート

注: Express (3.0) のアルファ版を試しましたが、役に立ちませんでした。
consolidate.js とそののすべてのモジュールについても同じことが言えます。


私がノード +エクスプレス+
ダストに興味を持った理由:

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

物事を解決するには、Express アプリで

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

node.jsでrequire.pathsの問題を解決するdust.jsのフォーク
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 に投稿するのはかなり新しいので、エチケットに違反した場合はお知らせください。FAQ で、自分の質問に回答することが奨励されていると読んだので、試してみようと思いました。

特に、私の書式設定がおそらく弱いことはわかっています。回答では、含まれているサイトの構造が明らかになるため、ガイドが推奨する URL の埋め込みではなく、完全なリンクを表示することを実際に好みました。サイトの URL が脳に染み込んでいると、次回の参照としてサイトを参照する機会が増えます。また、URL はかなり短いものでした。;^)提案は大歓迎です。

「コンソール」は通常どのようにフォーマットされていますか? コードとして?

于 2012-05-25T07:13:02.617 に答える