1

Expressjsでは、Dustjs複数のテンプレートが機能せず、500エラーが発生します:テンプレートが見つかりません:テンプレート

以下のような私のベースダストテンプレート(template.dust)

<div class="page">
  {+pageHeader}Hello World!{/pageHeader}
  <div class="bodyContent">
    {+bodyContent/}
  </div>
  <div class="footer">
    {+pageFooter}
       <hr>
       <a href="/contactUs">Contact Us</a>
    {/pageFooter}
  </div>
</div>

そして、この基本テンプレートを home.dust 内で呼び出そうとしていますが、以下のようなエラーが発生しています

Express
500 Error: Template Not Found: template
at Object.load (C:\office\nodejs-example\express_example\node_modules\application-name\node_modules\dust\lib\dust.js:54:27)
at Chunk.partial (C:\office\nodejs-example\express_example\node_modules\application-name\node_modules\dust\lib\dust.js:407:15)
at body_0 (undefined:1:130)
at Array.0 (C:\office\nodejs-example\express_example\node_modules\application-name\node_modules\dust\lib\dust.js:34:7)
at EventEmitter._tickCallback (node.js:192:40)

「ホームダスト」

{>"template"/}
{<pageHeader}
   {?username}
     Welcome {username} <a href="/items">Items</a> | <a href='/logout'> Log Out</a>
      {:else}
         <form method="POST" action="/signin">
            <label>Usename <input type="text" name="username" id="s-user"></label>
            <input type="submit" class="submit" value="Login">
         </form>
      {/username}
{/pageHeader}

ルート クラス メソッド

exports.home = function(req, res){
    res.render('home', {username :  req.session.username});

};
4

3 に答える 3

2

この問題を解決するために、私は次のように書きました。klei-dust と consolidate.dust の主な違いは、前者はパーシャルとアプリ ルートからのベース テンプレート パスを必要とせず、テンプレート ファイルの拡張子も指定する必要がないことです。

次にindex.dust、次のようになります。

{>layout/}
{<content}
    Body content...
{/content}

layout.dust同じフォルダに があるとしますindex.dust

于 2012-09-27T11:56:51.363 に答える
1

この問題を抱えているのはあなただけではありません。この問題は私を夢中にさせました! Express の作成者は、consolidate (Express で Dust を使用するパッケージ) に問題があると説明しています。

ええ、この種のことについて統合で未解決の問題があります。このメカニズムを
提供しないこれらのエンジンは、
現在かなり不器用です

投稿者: Googleグループの Express(tjholowaychuk) の作成者

于 2012-09-01T21:17:20.650 に答える
0

統合パッケージでdustjs-linkedinパッケージを使用します(dustjsパッケージは維持されなくなりました)。どちらもnpmにあります。次の手順を実行することで、レイアウトでダストテンプレートを使用できます。

layout.dust

  <body>
    <h1>{title}</h1>
{+content}
This is the base content.
{/content}
  </body>

index.dust(ホームページの一部)

{>"views/layout.dust"/}
{<content}
This is loaded from a partial.
{/content}

app.js

var dust = require('dustjs-linkedin')
, cons = require('consolidate');

app.engine('dust', cons.dust);

完全な例:https ://github.com/chovy/express-template-demo

于 2012-09-24T04:17:47.330 に答える