2015-04-13 2 views
1

Я пытаюсь воспроизвести учебник по использованию паспорта для создания аутентификации пользователей.шаблон ejs не отображается должным образом

всякий раз, когда я пытаюсь в том числе ниже фрагмент кода в signup.ejs:

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

он выдает ошибку, и как только я удалить это из signup.ejs, это делает.

ниже мой app.js (включает в себя все конфигурации), index.js (маршрутная часть), signup.ejs
и passport.js (ссылка на этот файл упоминается)

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 (по ссылке ниже :)
https://scotch.io/tutorials/easy-node-authentication-setup-and-local

Любая помощь будет действительно помочь мне в завершая этот урок.
Спасибо заранее.

ответ

1

Наконец, вырыт неисправность ...... был очень простой и основной error.Happy я не тратить время на друг ...
ошибки: я не передавая переменный в шаблоне время рендеринг.
codeChange: в index.js для /регистрации пути
res.render('signup.ejs'); изменения res.render('signup.ejs',{message:'errorMessage'});

Смежные вопросы