新版express,ejs模板编译显示函数未定义
partial,link_to等无法使用
<ul>
<% for(var i=0; i<items.length; i++){ %>
<li><%= link_to(items[i],'supplies/'+items[i]) %></li>
<% } %>
</ul>
代码是这个样子的,然后出现500错误,在模板编译的时候
link_to is not defined
at eval (eval at (D:\nodejs\test\node_modules\ejs\lib\ejs.js:226:12))
at exports.compile (D:\nodejs\test\node_modules\ejs\lib\ejs.js:228:15)
at Object.exports.render (D:\nodejs\test\node_modules\ejs\lib\ejs.js:266:13)
at View.exports.renderFile [as engine] (D:\nodejs\test\node_modules\ejs\lib\ejs.js:292:22)
at View.render (D:\nodejs\test\node_modules\express\lib\view.js:75:8)
at Function.app.render (D:\nodejs\test\node_modules\express\lib\application.js:504:10)
at ServerResponse.res.render (D:\nodejs\test\node_modules\express\lib\response.js:677:7)
at exports.index (D:\nodejs\test\routes\index.js:7:7)
at callbacks (D:\nodejs\test\node_modules\express\lib\router\index.js:165:11)
at param (D:\nodejs\test\node_modules\express\lib\router\index.js:139:11)
下面这些完全看不懂了,不知道是哪里的问题,ejs引擎是肯定安装了。
反正用任何函数都不行了,还有partial函数
7 回复
paritals 我可以用的,link_to不能用,我安装了 express-partials,可能新ejs把link_to也分离出去了?
express-partials 原来这个还需要额外安装,如果我在package.json如何写呢?如果没有就说个普通安装法吧
@zzuhan npm install express-partials
ejs用include来替代paritals了吧.
npm install express-partials
在app.js里面引用express-partials:
var partials = require('express-partials');
在app.set('view engine', 'ejs');
下面添加
app.use(partials());
3.在需要引用模板的地方调用layout:'模版名称’ 示例
app.get('/list', function(req, res){
res.render('list', {
title: 'List',
items: [1991,'byvoid','express', 'Node.js'],
layout:"list"
});
});
重要的一点 app.use(partials());需要放在 app.use(app.routes())之前。
app.use(partials());
放在
app.use(app.routes())
之前