Node.js, express.js & hogan.js:第二次刷新后部件无法正确加载



我有一个运行良好的Express 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"}})

}

更新:索引.html视图

{{> header}}
<h1>jow en {{jow}}</h1>
{{> footer}}

请参阅此藤蔓以获取快速概述:

https://vine.co/v/M7BYi75pdrh

一些见解将不胜感激,谢谢。

就像上面评论的那样,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) });
});

这不是最好的解决方案,但它有效。

合并.js可能应该使用不同的对象来缓存部分内容。我设法为霍根做了这件事,但这不适用于所有其他引擎。

最新更新