2012-12-17 9 views
5
machen

So versuche ich consolidate.js zu verwenden swig templates mit Express zu machen, aber ich bekomme die folgende Fehlermeldung, wenn ich versuche, eine Vorlage von einem anderen zu „verlängern“:Kann nicht swig Vorlagen in Express

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

In meinem app.js Datei-I-Setup swig als meine Rendering-Engine (nur relevant Code einschließlich):

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'); 
}); 

Und ich eine Basisvorlage haben, one.html:

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

Dann wird eine Vererbungsvorlage, two.html:

{% extends 'one.html' %} 

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

Warum also swig sucht one.html mit einem Pfad von //one.html (wie in dem obigen Fehler?) Vielen Dank für jede Hilfe.

Antwort

11

es Figured nach einem Blick auf die swig Dokumentation aus Alles, was ich initialize swig, tun musste, war und es zu sagen, wo für „extended“ Vorlagen suchen (speziell die section on usage with Express.):

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' }); 
+5

Sie brauchen nicht zu verwende consolidate, verwende [swig.renderFile'as engine] (http://paularmstrong.github.io/swig/docs/#express) => 'app.engine ('html', swig.renderFile);' – laconbass

+1

Beachten Sie, dass "swig.init" in der neuesten Version von swig veraltet ist. Weitere Optionen finden Sie in der [swig documentation] (http://paularmstrong.github.io/swig/docs/api/#SwigOpts). – user1534980