2012-10-12 1 views
1

이 코드로 제대로 렌더링하려면 '독립형'템플릿을 얻을 수는 있지만 템플릿 상속을 사용할 수는 없습니다. 내가 간과하거나 누군가가 알고있는 다른 경고가 있습니까?문제점 Node.js Express 3.x 템플릿 상속을 consolidate.js를 통해 Swig과 함께 작동

오류 : "... /views/index.html"의 3 번 줄에 Circular extends가 있습니다!

app.js :

var express = require('express') 
    , cons = require('consolidate') 
    , http = require('http') 

var app = express(); 

app.engine('html', cons.swig); 
app.set('view engine', 'html'); 
app.set('views', __dirname + '/views'); 
app.set('view options', { layout: false }); 

app.get('/', function(req, res){ 
    res.render('index.html', { header: 'Express' }); 
}); 

http.createServer(app).listen(3000, function(){ 
    console.log("Express server listening on port 3000"); 
}); 

index.html을

{% extends 'base.html' %} 

{% block content %}<h1>{{ header }}</h1>{% endblock %} 

base.html는

<!DOCTYPE html> 

<html> 
    <head> 
     <title>{% block title %}Express{% endblock %}</title> 
    </head> 

    <body> 
     {% block content %}{% endblock %} 
    </body> 
</html> 

답변

3

당신은 swig을 위해 자신을 rootallowErrors를 설정하여이 문제를 해결할 수 있습니다

var express = require('express') 
    , cons = require('consolidate') 
    , http = require('http') 
    , swig = require('swig') 

swig.init({ root: __dirname + '/views', allowErrors: true }); 

// ... 

더 많은 정보 Using Swig with express.jsSwig API를 참조하십시오.

+0

그것을했다! 나는 행운이없는 '익스프레스'와 '상속'이라는 용어에 대한 문제를 계속 조사했다. 감사! – Brian

0

나는 꿀꺽 꿀꺽에 대해 잘 모르겠지만, 익스프레스 3에서 그들은 템플릿 상속을 제거 부분 및 레이아웃을 구현하고이를 구현할 템플릿 엔진에 맡겼습니다. 플러그인을 다시 사용할 수 있습니다.

EJS : https://github.com/RandomEtc/ejs-locals

https://github.com/publicclass/express-partials

+0

Swig docs에 따르면 템플릿 상속이 지원됩니다. https://github.com/paularmstrong/swig/blob/master/docs/inheritance.md – Brian

+0

시도했지만 원형 참조가 있습니다. 오류 : 순환 확장 "/var/www/express-template-demo/demo/views/index.swig" – chovy

+0

2 행에 있습니다.이 예는 swig를 사용하는 데 도움이됩니다. https://github.com/visionmedia/consolidate.js – chovy