5

そのため、 consolidate.jsを使用してswigテンプレートをexpressでレンダリングしようとしていますが、あるテンプレートを別のテンプレートから「拡張」しようとすると、次のエラーが発生します。

Error: ENOENT, no such file or directory '//one.html

私のapp.jsファイルでは、レンダリングエンジンとしてswigを設定しています(関連するコードのみを含む):

var consolidate = require('consolidate');

app.set('view engine', 'html');
app.set('views', __dirname + '/views');
app.engine('.html', consolidate.swig);

app.get('/test', function(req, res) {
    res.render('two');
});

そして、私は基本テンプレートを持っていますone.html

<h3>My Site</h3>
{% block content %}
    Welcome
{% endblock %}

次に、継承テンプレート、two.html

{% extends 'one.html' %}

{% block content %}
    This is an inner page.
{% endblock %}

では、なぜswigは(上記のエラーのように)one.htmlのパスで検索するのですか?助けてくれてありがとう。//one.html

4

1 に答える 1

11

swigのドキュメント(特にExpressでの使用法のセクション)を見て理解しました。私がしなければならなかったのは、swigを初期化し、「拡張」テンプレートを探す場所を指示することだけでした。

var consolidate = require('consolidate'),
    swig = require('swig');

app.set('view engine', 'html');
app.set('views', __dirname + '/views');
app.engine('.html', consolidate.swig);

app.get('/test', function(req, res) {
    res.render('two');
});

/* Tell swig where to look for templates when one extends another. */
swig.init({ root: __dirname + '/views' });
于 2012-12-17T03:29:52.600 に答える