app.render 在Node.js中使用Express与Gaikan

res.render工作正常:

res.render('main', function(err, html){ // Returns '<html></html>' contained inside of 'views/main.html' console.log(html); }); 

但是我的app.render:

 app.render('main', function(err, html){ // Returns undefined console.log(html); }); 

app.render返回的错误是:

 [TypeError: Cannot set property 'content' of undefined] 

我假设它正在尝试设置data.content(作为更改的一部分),但是我不确定,而且我不知道问题是什么。

帮助将不胜感激。

堆栈跟踪: http : //puu.sh/5qGSq.png

configuration:

 var express = require('express'), gaikan = require('gaikan'); app.configure(function() { app.engine('html', gaikan); app.set('view engine', 'html'); app.set('views', __dirname + '/views'); gaikan.options.scoped = true; }); 

如上所述,模板只是<html></html>

我认为这是一个问题,一个假设是不正确的,也就是说,传递给render函数的options参数总是包含一个_locals属性。

查看Express代码,只有在调用res.render()时,该属性才能保证存在,但当调用res.render() ,需要在代码之前自行显式传递它:

 app.render('main', { _locals : {} }, function(err, html) { ... }); 

我无法重现的原因是因为这个问题只发生在gaikan.options.scoped === true