簡體   English   中英

app.render [TypeError:無法設置未定義的屬性'content']在Node.js中與Gaikan一起使用Express

[英]app.render [TypeError: Cannot set property 'content' of undefined] Using Express with Gaikan in Node.js

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(屬於Gaikan),但是我不確定,也不知道問題出在哪里。

幫助將不勝感激。

堆棧跟蹤: http : //puu.sh/5qGSq.png

配置:

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>

我認為這是Gaikan做出的假設不正確的問題,即,傳遞給render函數的options參數始終包含_locals屬性。

查看Express代碼,只有在調用res.render()時,該屬性才能保證存在,但是當您調用app.render()您需要在Gaikan工作之前自己明確地傳遞它:

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

我之所以無法復制它,是因為僅當gaikan.options.scoped === true時才會出現此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM