首页 > 解决方案 > TypeError:使用 Passport.js 时无法读取未定义的属性“headersSent”

问题描述

应用程序.js

var adminRouter = require('./routes/adminportal/home');
    app.use('/portal/admin', adminRouter)(passport);
    module.exports = app;

护照.js

var LocalStrategy   = require('passport-local').Strategy;

var mysql = require('mysql');
var dbconfig = require('../routes/db.js');


    passport.serializeUser(function(user, done) {
        done(null, user.id);
    });


    passport.deserializeUser(function(id, done) {
        db(function(err,conn){
            conn.query("SELECT * FROM admin WHERE id = ? ",[id], function(err, rows){
                done(err, rows[0]);
            });
        })
    });


    passport.use(
        'local-login',
        new LocalStrategy({

            usernameField : 'user_name',
            passwordField : 'password',
            passReqToCallback : true 
        },
        function(req, username, password, done) {
            db(function(err,conn){
                conn.query("SELECT * FROM admins WHERE email_address = ?",[username], function(err, rows){
                    if (err)
                    return done(err);
                if (!rows.length) {
                    return done(null, false, req.flash('loginMessage', 'bulunamadi.')); 
                }


                if (password != rows[0].password)
                    return done(null, false, req.flash('loginMessage', 'yanlis parola.'));


                return done(null, rows[0]);
                })
            }) 
        })
    );

    module.exports = passport;

主页.js

module.exports = function(passport){
  /* GET home page. */
router.get('/', function(req, res, next) {
  if(req.session.userId != null){
    message = '';
    //res.render('dashboard',{message:message});
    res.render("adminportal/login.ejs");
  }else{
    var message = '';
    var sess = req.session; 
    res.render('adminportal/login.ejs',{message:message});   
  }
});
return router;
}

所以每当我尝试运行localhost5000:/portal/admin它时都会返回以下错误:TypeError: Cannot read property 'headersSent' of undefined

我被困住了几个小时一直在尝试实施passport.js,这是我第一次设置Passport.js。我做错了吗?我试图用谷歌搜索错误,但没有相关结果。任何帮助将不胜感激。

标签: javascriptnode.jspassport.js

解决方案


护照参数应该与 require 函数而不是 app.use() 函数一起使用,因此您在 app.js 文件中的代码将是:

var adminRouter = require('./routes/adminportal/home')(passport); app.use('/portal/admin', adminRouter); module.exports = app;


推荐阅读