How to render Swig templates with Express 4?

I cannot use Swig templates with Express for Node. I get the following error:

Error: Failed to lookup view "index" in views directory

Swig templates not compiled to .html files

My code is below:

var express = require('express');
var cons = require('consolidate');
var swig = require('swig');
var app = express();

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


// Disable Express and Swig Cache
app.set('view cache', false);
swig.setDefaults({ cache: false });

app.get('/', function(req, res){
  res.render('index', {'title': 'Design'});
});

app.listen(3000);
+4
source share
4 answers

I had the same problem. To use swig patterns when working with the extension swig, you can follow swig Docs and then replace the following two lines: app.engine('html', cons.swig); app.set('view engine', 'html'); with app.engine('swig',swig.renderFile); app.set('view engine', 'html');

It should look something like this.

var express = require('express');
var swig = require('swig');
var app = express();

// view engine setup
// This is where all the magic happens!
app.engine('swig', swig.renderFile);
app.set('view engine', 'swig');
app.set('views', path.join(__dirname, 'views'));
app.set('view cache', false);
swig.setDefaults({ cache: false });
Run codeHide result

Expressjs 4.x docs app.engine app.engine . , , swig, swig.renderFile. HTML.

Expressjs 4.x docs app.set view engine swig , . , /blaha/blaha/blah/views.

. int .swig. , , , . ex: layout.swig. , .

+3
+1

, , .swig , SWIG . , "swig" :

// view engine setup
app.engine('swig', swig.renderFile);
app.set('view engine', 'swig');
app.set('views', path.join(__dirname, 'views'));

, ./views/layout.swig

0

swig swig, package.json

var express = require('express');

var swig = require('swig');

var app = express();

// Here we need to set up and engine as per latest version of swig //for latest version of swig we need to include swig package which //needed to installed through package manager or package.json file

app.engine('swig', swig.renderFile);

app.set('view engine', 'swig');

app.set('views', path.join(__dirname, 'views'));

app.set('view cache', false);

swig.setDefaults({ cache: false }); //Here we are setting cache defaults to false.

`

0
source

All Articles