node.JS Express护照路由

我已经创build了一个简单的项目,3页:家庭,联系和关于。

一切正常,然后我想添加用户注册与mongo。

所以我跟着这个教程

但是,当我添加一些新的路线,我不能访问更多的页面。

这是我的index.js当我可以访问我的3页

 var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res) { res.render('index', { title: 'Express' }); }); /* GET contact page. */ router.get('/contact', function(req, res) { res.render('contact'); }); /* POST contact page (submit). */ router.post('/contact', function(req, res) { res.render('contact', { name: req.param('name') }); }); /* GET home page. */ router.get('/home', function(req, res) { res.render('home'); }); /* POST home page (submit). */ router.post('/home', function(req, res) { res.render('home', { comm: req.param('comm') }); }); /* GET about page. */ router.get('/about', function(req, res) { res.render('about'); }); module.exports = router; 

所有简单和工作。 现在,就是这样:

 var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res) { res.render('index', { title: 'Express' }); }); /* GET contact page. */ router.get('/contact', function(req, res) { res.render('contact'); }); /* POST contact page (submit). */ router.post('/contact', function(req, res) { res.render('contact', { name: req.param('name') }); }); /* GET home page. */ router.get('/home', function(req, res) { res.render('home'); }); /* POST home page (submit). */ router.post('/home', function(req, res) { res.render('home', { comm: req.param('comm') }); }); /* GET about page. */ router.get('/about', function(req, res) { res.render('about'); }); module.exports = router; module.exports = function(passport){ // /* GET login page. */ // router.get('/', function(req, res) { // // Display the Login page with any flash message, if any // res.render('index', { message: req.flash('message') }); // }); /* Handle Login POST */ router.post('/login', passport.authenticate('login', { successRedirect: '/home', failureRedirect: '/', failureFlash : true })); /* GET Registration Page */ router.get('/signup', function(req, res){ res.render('register',{message: req.flash('message')}); }); /* Handle Registration POST */ router.post('/signup', passport.authenticate('signup', { successRedirect: '/home', failureRedirect: '/signup', failureFlash : true })); return router; } 

现在没有路线显示。

有任何想法吗 ?

谢谢 !

编辑: app.js

 var express = require('express'); var path = require('path'); var favicon = require('static-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var swig = require('swig'); var dbConfig = require('./db.js'); var mongoose = require('mongoose'); mongoose.connect(dbConfig.url); var routes = require('./routes/index'); var app = express(); // Configuring Passport var passport = require('passport'); var expressSession = require('express-session'); app.use(expressSession({secret: 'mySecretKey'})); app.use(passport.initialize()); app.use(passport.session()); // view engine setup app.engine('html', swig.renderFile); app.set('view engine', 'html'); app.set('views', path.join(__dirname, 'views')); // view cache app.set('view cache', false); swig.setDefaults({ cache: false }); app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); /// catch 404 and forwarding to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); /// error handlers // 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: {} }); }); module.exports = app; 

你的模块需要一个passport对象

 module.exports = function(passport){ 

但是你不用app.js中的护照对象来调用它

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

另外,您需要在调用路由模块之前定义护照。 所以最后你需要修改你的app.js,看起来像这样:

 var passport = require('passport'); var expressSession = require('express-session'); app.use(expressSession({secret: 'mySecretKey'})); app.use(passport.initialize()); app.use(passport.session()); ... var routes = require('./routes/index')(passport); ... app.use('/', routes);