adifire
adifire

Reputation: 610

layout.ejs not rendered - Node.js, Express

I am trying to execute a simple example of node.js with EJS templates. Node, or rather express is unable to render the index page, as in the following code, with layout.ejs, no matter what I do.

Here's the app.js

var express = require('express')
  , routes = require('./routes')
  , http = require('http');

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 8001);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  app.set('view options', {layout: 'views/layout.ejs'});
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler());
});

app.get('/', routes.index);


http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

layout.ejs

<!DOCTYPE html>
<html>

 <head> <title><%= title %></title> </head>

 <body> <%- body %> </body>

</html>

And in index.ejs, it's just this

<p> Some Text </p>

Have I missed something here?

Upvotes: 2

Views: 8645

Answers (1)

jemiloii
jemiloii

Reputation: 25759

app.set('view options', { layout:'layout.ejs' });

remove the views/ and it should work.

Upvotes: 3

Related Questions