Reputation: 2599
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 come nunjucks is not rendering the variable into the template?
Upvotes: 4
Views: 5751
Reputation: 1
if you use thinkjs on windows: your view.js should look like this:
export default {type: 'nunjucks',root_path: think.ROOT_PATH + '\\view',};
Upvotes: 0
Reputation: 867
You 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', ...)
Upvotes: 4