我有一个运行良好的快速3应用程序,但是当我第二次刷新网站时出现问题。
var x = {footer:"footer", header:"header"}
exports.index = function(req, res){
res.render("index.html", {jow: "ieps", partials:x})
}
当我第一次去我的网站时,一切都很好,所有部分都变得很棒。
但刷新时我有这个错误:
Error: ENOENT, open '/Users/kevinvanhove/Documents/work/projects/basing/business/klanten/javascript/nodeJS/express/basing/views/<h2>wow</h2>.html'
但是,当删除x变量并将对象文字直接添加到res.render参数列表时,一切正常。
exports.index = function(req, res){
res.render("index.html", {jow: "ieps", partials:{footer:"footer", header:"header"}})
}
更新:index.html视图
{{> header}}
<h1>jow en {{jow}}</h1>
{{> footer}}
请参阅此藤蔓以获得快速概述:
非常感谢您的一些见解,谢谢。
答案 0 :(得分:0)
如上所述,Consolitate.js会改变原始对象:https://github.com/tj/consolidate.js/blob/master/lib/consolidate.js#L124
我总是使用部分克隆来解决这个问题:
// ...
var _ = require('underscore');
var partials = { layout: 'layout' };
app.get('/', function(request, response) {
response.render('index', { partials: _.clone(partials) });
});
这不是最佳解决方案,但它确实有效。
consolidate.js可能应该使用不同的对象来缓存部分内容。我设法为hogan做了这个,但这不适用于所有其他引擎。