2012-08-16 52 views
1

在expressjs多個模板,Dustjs多個模板不工作得到500錯誤:模板未找到:模板在expressjs,Dustjs不工作

我的基地灰塵模板如下(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) 

「home.dust」

{>"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}); 

}; 
+0

我在這裏舉了個例子......也讓我發瘋。 index.dust應該覆蓋base.dust中的內容塊:https://github.com/chovy/express-template-demo/tree/master/demo/views – chovy 2012-09-20 04:57:16

回答

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); 
:您可以通過以下操作使用灰塵模板和佈局

Full example:https://github.com/chovy/express-template-demo

1

你並不孤單與這個問題,這個問題讓我想瘋了! Express的作者解釋說,合併中存在一個問題(使用Dust in Express的軟件包)。

yeah there's an issue open in consolidate for this sort of thing,
these engines that do not provide
this mechanism are pretty clumsy right now

方式:快遞(tjholowaychuk)from google groupes

+0

我試過這個[包](https:/ /npmjs.org/package/klei-dust),它對Express 3.x非常有用。現在您可以使用多個模板的Dust了。 – appsunited 2012-10-01 13:29:14

2

爲了解決這個問題,我寫道:klei-dust這是一個幫手,像鞏固一樣,使用dustjs-linkedin和express 3.x. klei-dust和consolidationate.dust之間的主要區別在於前者不需要相對於應用程序根目錄的partials和base模板路徑,也不需要指定模板文件擴展名。

index.dust然後可能看起來像:

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

鑑於你在同一個文件夾layout.dustindex.dust