my login form is ok, my layout.ejs without tag <%- body> inside is working. but when i put <%- body> purposely to render index.ejs with somethingtext… it will get an error <%- body> is not defined.
I’m using node.js, javascript and express ejs layouts. index.ejs cannot render to if i put <%- body> to layout.ejs it will get result <%- body > is not defined… please help fix this… when i login i gets an error “body is not defined”. But when i removed <%- body> it will not get an error but the index.ejs something doesnt render to layout.ejs…
index.ejs <h1>This is the home page!</h1> layout.ejs <!DOCTYPE html> <html lang=”en”> <head> <meta charset=”UTF-8″> <meta name=”viewport” content=”width=device-width, initial-scale=1.0, shrink-to-fit=no”> <meta http-equiv=”X-UA-Compatible” content=”ie=edge”> </head> <div> <ul>wow</ul> <%- body %> </div> <body> </body> </html> //routes.js ///setting first run***** var express = require(‘express’); var app = express(); var expressLayouts=require(“express-ejs-layouts”); app.set(‘view engine’, ‘ejs’); app.use(expressLayouts); module.exports = function(app, passport) { app.get(‘/’, function(req, res){ res.render(‘login.ejs’, {message:req.flash(‘loginMessage’)}); }); app.post(‘/login’, passport.authenticate(‘local-login’, { successRedirect: ‘/layout’, failureRedirect: ‘/’, ////// this one been troubleshooting FM failureFlash: true }), function(req, res){ if(req.body.remember){ req.session.cookie.maxAge = 1000 * 60 * 3; }else{ req.session.cookie.expires = false; } res.redirect(‘layout.ejs’); }); //server.js var createError = require(‘http-errors’); var express = require(‘express’); var session = require(‘express-session’); var cookieParser = require(‘cookie-parser’); var bodyParser = require(‘body-parser’); var morgan = require(‘morgan’); var app = express(); var path = require(‘path’); //var expressLayouts = require(‘express-ejs-layouts’); var expressLayouts=require(“express-ejs-layouts”); //var ejsLayouts = require(‘express-ejs-layouts’); var ejs = require(‘ejs’); //*********************************** */ app.use(express.static(‘public’)); app.use(‘/stylesheets’, express.static(__dirname + ‘public/stylesheets’)); app.use(‘/animations’, express.static(__dirname + ‘public/animations’)); app.use(‘/img’, express.static(__dirname + ‘public/img’)) //app.set(‘view options’, { layout:’layout.ejs’ }); //app.use(logger(‘dev’)); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); var passport = require(‘passport’); var flash = require(‘connect-flash’); const { request } = require(‘http’); const { response } = require(‘express’); require(‘./config/passport’)(passport); app.use(morgan(‘dev’)); app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: true })); app.use(session({ secret: ‘justasecret’, resave:true, saveUninitialized: true })); app.use(passport.initialize()); app.use(passport.session()); app.use(flash()); require(‘./app/routes.js’)(app, passport); ////no preload //app.set(‘views’, ‘./views’); app.set(‘views’, __dirname + ‘/views’); app.set(‘view engine’, ‘ejs’); app.set(‘view options’, { layout:’layout.ejs’ }); //app.use(‘/’,router); app.use(expressLayouts); //app.use(ejsLayouts); app.set(“layout extractScripts”, true) app.get(‘/layout’, isLoggedIn, function(_req, res, _next) { res.render(‘layout’, {layout: ‘layout.ejs’, }); //user:req.user}); }); function isLoggedIn(req, res, next){ if(req.isAuthenticated()) return next(); res.redirect(‘/’); } app.get(‘/foods’, function(req, res) { res.render(‘faves/foods’, {title: ‘Favorite Foods’, foods: [‘coconut’, ‘avocado’]}); }); app.get(‘/animals’, function(req, res) { res.render(‘faves/animals’, {title: ‘Favorite Animals’, animals: [‘sand crab’, ‘corny joke dog’]}) }); app.listen(3000, () => { console.log(‘Server is running at port 3000’) }); module.exports = app;