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

del*_*ber 13 node.js 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'));
Run Code Online (Sandbox Code Playgroud)

工作良好

app.use(app.router);
app.use(express.static(__dirname + '/public'));
app.use(passport.initialize());
app.use(passport.session()); 
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

Lin*_*iel 27

您仍然需要app.use(app.router)在Passport之后.否则,您的路由将在任何Passport代码之前运行,这就是您看到错误的原因.这应该工作:

app.use(express.static(__dirname + '/public'));
app.use(passport.initialize());
app.use(passport.session()); 
app.use(app.router);
Run Code Online (Sandbox Code Playgroud)