I have folder structure as follows:
/app
|-routes.js
/public
|-index.html
server.js
Server.js looks like this:
var nunjucks = require('nunjucks');
var express = require('express');
var app = express();
nunjucks.configure('public', { autoescape: true, express: app });
var port = process.env.PORT || 8080;
app.use(express.static(__dirname + '/public'));
require('./app/routes')(app); // configure our routes
app.listen(port);
exports = module.exports = app;
app/routes.js looks like this:
module.exports = function(app) {
app.get('*', function(req, res) {
res.render('index.html', { awesome: 'page-title' });
});
};
public/index.html looks like this:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<base href="/">
<title>{{awesome}}</title>
</head>
<body>
<h1>{{ awesome }}</h1>
</div>
</body>
</html>
When I start up my node app and browse to localhost:8080, the page title is the string {{ awesome }} and the contains the string {{ awesome }} rather than the required "page-title". How e nunjucks is not rendering the variable into the template?
I have folder structure as follows:
/app
|-routes.js
/public
|-index.html
server.js
Server.js looks like this:
var nunjucks = require('nunjucks');
var express = require('express');
var app = express();
nunjucks.configure('public', { autoescape: true, express: app });
var port = process.env.PORT || 8080;
app.use(express.static(__dirname + '/public'));
require('./app/routes')(app); // configure our routes
app.listen(port);
exports = module.exports = app;
app/routes.js looks like this:
module.exports = function(app) {
app.get('*', function(req, res) {
res.render('index.html', { awesome: 'page-title' });
});
};
public/index.html looks like this:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<base href="/">
<title>{{awesome}}</title>
</head>
<body>
<h1>{{ awesome }}</h1>
</div>
</body>
</html>
When I start up my node app and browse to localhost:8080, the page title is the string {{ awesome }} and the contains the string {{ awesome }} rather than the required "page-title". How e nunjucks is not rendering the variable into the template?
Share Improve this question asked Nov 6, 2014 at 19:15 Jonathan SmithJonathan Smith 2,5991 gold badge37 silver badges67 bronze badges2 Answers
Reset to default 4You have to split 'public' folder. What is in public, cannot be processed by nunjucks. It's static (you declared it so). Put your nunjucks template in folder e.g. 'views'
/app
|-routes.js
/public
|css/
|img/
/views
|- index.html
server.js
nunjucks.configure('views', ...)
if you use thinkjs on windows: your view.js should look like this:
export default {type: 'nunjucks',root_path: think.ROOT_PATH + '\\view',};