为什么Passport.js会给我一个中间件错误?

我正在尝试这里所述的解决方法

https://github.com/jaredhanson/passport/issues/14

app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); app.use(express.static(__dirname + '/public')); 

工作正常

 app.use(app.router); app.use(express.static(__dirname + '/public')); app.use(passport.initialize()); app.use(passport.session()); 

 DEBUG: Error: passport.initialize() middleware not in use at IncomingMessage.<anonymous> (/.../node_modules/passport/lib/passport/http/request.js:30:30) at Context.<anonymous> (/.../node_modules/passport/lib/passport/middleware/authenticate.js:92:11) at Context.<anonymous> (/.../core/node_modules/passport/lib/passport/context/http/actions.js:21:25) at Strategy.success (native) 

Passport后仍然需要app.use(app.router) 。 否则,您的路线将在任何护照代码之前运行,这就是为什么您会看到该错误。 这应该工作:

 app.use(express.static(__dirname + '/public')); app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); 

可能帮助别人,我有同样的问题。 我的应用configuration看起来像这样。 这导致了错误。

 app.configure(function() { .... app.use(app.router); app.use(passport.initialize()); app.use(passport.session()); app.use(express.static(path.join(__dirname, 'public'))); }); 

我不得不按照下面的顺序重新sorting。

 app.configure(function() { .... app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); });