node.js ejs包含错误
我正在创建此模板:node.js ejs包含错误,node.js,ejs,Node.js,Ejs,我正在创建此模板: <% include head %> <Placemark> <name><%=name%></name> <description><%=description%></description> <Point> <coordinates><%=coordinates%></coordinates>
<% include head %>
<Placemark>
<name><%=name%></name>
<description><%=description%></description>
<Point>
<coordinates><%=coordinates%></coordinates>
</Point>
</Placemark>
<% include foot %>
目录:
justas@justas-Studio-1555:~/node-socket.io/socket.io/examples/kml$ ls -1
app.js
foot.ejs
head.ejs
placemark.ejs
有人能帮忙吗,我认为一切都应该工作
app.js:
var http = require('http');
var ejs = require('ejs');
var fs = require('fs')
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/xml'});
fs.readFile('placemark.ejs', 'utf8', function (err, template) {
var content = ejs.render(template,{
name:"test name",
description:"this is the description",
coordinates:"-122.0822035425683,37.42228990140251,0"
});
res.write(content);
res.end()
});
}).listen(8000);
console.log('Server listening at at xxxxxxxx');
使用ejs I渲染模板,它从其他模板构造。使用ejs局部变量,它表示它没有render方法。只有“ejs”才能做到这一点吗?以下是一个工作示例: 似乎您需要传入模板的文件名,以便能够使用include-请参阅
我最近也遇到了这个错误。我看到了亚历克斯詹姆斯布朗的答案,但我不喜欢这个解决方案。我不希望每次渲染都包含filename变量;代码可能会变得混乱!我更愿意将文件包含在各个视图中 因此,我深入研究了ejs lib文件,并删除了对filename变量的要求 您将在第157行的\ejs\lib\ejs.js中找到以下内容
if (!filename) throw new Error('filename option is required for includes');
只需注释掉该行,并在.ejs文件中使用
,即可包含您的各个视图
以上内容适用于ejs版本0.8.4刚才碰到了这个问题,下面是如何定义模板文件夹并将这些模板包含在主ejs文件中:
var renderedHtml = ejs.render(content,
{
data: data,
filename: __dirname + '/app/templates/*'
}
);
它无法识别“部分”引用错误:ejs:1>>1 | 2 | 3 | 4 |部分未定义“您是否在应用程序中使用require('ejs')?最新ejs和express 3不支持部分。你需要ejs局部变量来实现这一点。使用ejs局部变量表示它没有呈现方法。有没有办法只用“ejs”就可以做到这一点?谢谢你提供的功能,例如,它完成了任务:)你使用的是什么版本的ejs和express?这看起来是正确的,这就是我使用的/家/贾斯塔斯酒店├── ejs@0.8.3 ├─┬ express@3.0.0wow,你太棒了,这太棒了。我刚刚在github上添加了一个bug。干杯@JasonS-只是为了更新一下,这已经不在第157行了。在ejs\lib\ejs.js文件中搜索此行。
if (!filename) throw new Error('filename option is required for includes');
var renderedHtml = ejs.render(content,
{
data: data,
filename: __dirname + '/app/templates/*'
}
);