使用express在node.js中登录facebook时出现中间件错误

使用express在node.js中登录facebook时出现中间件错误,node.js,facebook,express,passport-facebook,Node.js,Facebook,Express,Passport Facebook,我得到一个中间件错误。我对node.js和express非常陌生(这是我的第一个大项目)。我已经搜索了这么久,谷歌已经很好了。错误应该在我的app.js中的我的顺序中。我试过很多订单,但我找不到我到底做错了什么,尤其是为什么? 我用的是护照 我希望你们能理解我的问题,英语不是我的第一语言 错误: if (!this._passport) { throw new Error('passport.initialize() middleware n

我得到一个中间件错误。我对node.js和express非常陌生(这是我的第一个大项目)。我已经搜索了这么久,谷歌已经很好了。错误应该在我的app.js中的我的顺序中。我试过很多订单,但我找不到我到底做错了什么,尤其是为什么? 我用的是护照

我希望你们能理解我的问题,英语不是我的第一语言

错误:

    if (!this._passport) { throw new Error('passport.initialize() middleware n
                                 ^
Error: passport.initialize() middleware not in use
    at IncomingMessage.req.login.req.logIn 
代码,my 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 jsdom = require("jsdom"); 
// $ = require("jquery")(jsdom.jsdom().parentWindow()); 

var dbConfig = require('./db');
var mongoose = require('mongoose');
var app = express();
var User = require('./models/user');
//////
var http = require('http').Server(app);
var io = require('socket.io')(http);
var fs = require('fs');
var data = require('./countries.json');


// Configuring Passport
var passport = require('passport')
  , FacebookStrategy = require('passport-facebook').Strategy;

http.listen(3000);

// Connect to DB
mongoose.connect(dbConfig.url);

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

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.get('/auth/facebook', passport.authenticate('facebook'));


app.get('/auth/facebook/callback', passport.authenticate('facebook', {failureRedirect: '/'}), function(req, res) {
    console.log('Facebook');
    res.redirect('/home');
});

var expressSession = require('express-session');
// TODO - Why Do we need this key ?
app.use(expressSession({secret: 'mySecretKey'}));
app.use(passport.initialize());
app.use(passport.session());

 // Using the flash middleware provided by connect-flash to store messages in session
 // and displaying in templates
var flash = require('connect-flash');
app.use(flash());

// Initialize Passport
var initPassport = require('./passport/init');
initPassport(passport);

var routes = require('./routes/index')(passport);
app.use('/', routes);

passport.use(new FacebookStrategy({
    clientID: "xx",
    clientSecret: "xxx",
    callbackURL: "http:localhost:3000/auth/facebook/callback"
    //redirect_uri: "/home"
  },
  function(accessToken, refreshToken, profile, done) {        
   User.findOne({ 'username' :  msg[1] }, function(err, user) {
    //save fb user to db
  }
));
module.exports = app;

没有人会仔细检查您的代码并为您修复它。请确定一个特定的问题,并且只发布与之相关的代码。看在上帝的份上,模块化。是的,我很抱歉这是匹配代码的方式。我删除了很多,只有重要的东西还在那里。我的问题当然是错误,这说明我的订单不正确。但我尝试了很多不同的命令,但直到现在还没有发现问题。你不应该在这里的代码中显示clientId和clientSecret。使用xxxxxx插图。你读过这个吗?是的,我读过几遍。这看起来很愚蠢,而且可能是,但当我尝试它(尝试了几次)时,它似乎不起作用。