ejs template not rendering properly

dreamer

I am trying to replicate a tutorial on using passport to create user authentication.

whenever i try including the below snippet in signup.ejs:

<% if (message.length > 0) { %>
    <div class="alert alert-danger"><%= message %></div>
<% } %>

it throws error and as soon as i remove this from signup.ejs, it renders.

below is my app.js(includes all the configurations), index.js(routing part), signup.ejs
and passport.js(link to this file is mentioned)

app.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');    

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();
var mongoose = require("mongoose");
var passport = require('passport');
var flash    = require('connect-flash');
var session = require('express-session');

mongoose.connect("mongodb://jer:[email protected]:61611/passport1");
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

require('./config/passport')(passport);
app.use(logger('dev'));    
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));

// required for passport
app.use(session({ secret: 'zxcv' })); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session

app.use('/', routes);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});

app.listen(8000);
module.exports = app;

index.js

var express = require('express');
var router = express.Router();
var passport = require('passport');
/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index.ejs', { title: 'Express' });
});

router.get('/signup', function(req, res) {

        // render the page and pass in any flash data if it exists
        res.render('signup.ejs');
    });

 // process the signup form
 console.log("entering signup");
 router.post('/signup', passport.authenticate('local-signup', {

        successRedirect : '/profile', // redirect to the secure profile section
        failureRedirect : '/signup', // redirect back to the signup page if there is an error
        failureFlash : true // allow flash messages
    }));    
router.get('/profile', isLoggedIn, function(req, res) {
    console.log("going to profile page.................................................................");
        res.render('profile.ejs', {
            user : req.user // get the user out of session and pass to template
        });
    });


function isLoggedIn(req, res, next) {

    // if user is authenticated in the session, carry on 
    if (req.isAuthenticated())
        return next();

    // if they aren't redirect them to the home page
    res.redirect('/');
}


module.exports = router;

signup.ejs

<!doctype html>
<html>
<head>
    <title>Node Authentication</title>
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css"> <!-- load bootstrap css -->
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css"> <!-- load fontawesome -->
    <style>
        body        { padding-top:80px; }
    </style>
</head>
<body>
<div class="container">

<div class="col-sm-6 col-sm-offset-3">

    <h1><span class="fa fa-sign-in"></span> Signup</h1>


    <% if (message.length > 0) { %>
        <div class="alert alert-danger"><%= message %></div>
    <% } %>

    <!-- LOGIN FORM -->
    <form action="/signup" method="post">
        <div class="form-group">
            <label>Email</label>
            <input type="text" class="form-control" name="email">
        </div>
        <div class="form-group">
            <label>Password</label>
            <input type="password" class="form-control" name="password">
        </div>

        <button type="submit" class="btn btn-warning btn-lg">Signup</button>
    </form>

    <hr>    
</div>

</div>
</body>
</html>

passport.js (at below link:)
https://scotch.io/tutorials/easy-node-authentication-setup-and-local

Any help would really help me in completing this tutorial.
Thanks in advance.

dreamer

Finally, digged out the fault...... was a very simple and basic error.Happy i did not waste other's time...
error: i was not passing the variable into the template while rendering.
codeChange: in index.js for the /signup path
res.render('signup.ejs'); changes to res.render('signup.ejs',{message:'errorMessage'});

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Knockout JS Template HTML Not Rendering Properly

From Dev

Template not rendering properly with if user.is_authenticated for Django

From Dev

Laravel blade template not rendering table properly

From Dev

EJS file not rendering stylesheet despite feeding from template partial

From Dev

Rendering HTML template with EJS in a callback for asynchronous fs.readFile?

From Dev

EJS file not rendering stylesheet despite feeding from template partial

From Dev

Rendering HTML template with EJS in a callback for asynchronous fs.readFile?

From Dev

Jinja2 template not rendering if-elif-else statement properly

From Dev

Ejs - templating data is not rendering

From Dev

ejs template expression in ejs template expression (not include)

From Dev

Outputting an underscore template in EJS

From Dev

Change EJS Template Directory

From Dev

External js in an EJS template

From Dev

Outputting an underscore template in EJS

From Dev

External js in an EJS template

From Dev

ejs - looking to add if condition in EJS template

From Dev

Nested Layout not rendering properly

From Dev

Image not rendering properly

From Dev

Markdown in Meteor not rendering properly

From Dev

canvasJS chart not rendering properly

From Dev

Javafx image not rendering properly

From Dev

SVG not rendering properly in Firefox

From Dev

JavaFx not rendering properly

From Dev

Nested JLayeredPane not rendering properly

From Dev

Properly rendering stored HTML

From Dev

Bundled scripts not rendering properly

From Dev

Chrome not rendering properly in Ubuntu

From Dev

SVG not rendering properly in Firefox

From Dev

Markdown in Meteor not rendering properly

Related Related

HotTag

Archive