在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>
我试图在我的家中调用这个基本模板。我收到错误如下
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 :(得分:2)
为了解决这个问题,我写道:klei-dust这是一个帮手,就像巩固一样,使用dustjs-linkedin和express 3.x. klei-dust和consolidate之间的主要区别在于,前者不需要相对于app root的部分和基本模板路径,也不需要你指定模板文件扩展名。
您的index.dust
可能如下:
{>layout/}
{<content}
Body content...
{/content}
假设layout.dust
位于与index.dust
相同的文件夹中。
答案 1 :(得分:1)
这个问题并不孤单,这个问题让我发疯了! Express的作者解释说,合并中存在一个问题(在Express中使用Dust的软件包)。
是的,在这种事情的合并中存在一个问题,
这些发动机不提供 这个机制现在非常笨拙
作者:Express(tjholowaychuk)的作者from google groupes
答案 2 :(得分: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);