0

我有一条看起来像这样的路线:

  exports.logout = function(res, req){
      req.logout() // I blow up
      res.redirect('/')
    }

错误:对象#ServerResponse 没有方法“注销”

调用此路由时,Request 对象不包含注销功能。我认为这是因为我的中间件顺序错误。那是对的吗?这是我的配置的样子:

app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.cookieParser('meow'));
app.use(express.bodyParser());
app.use(express.session());
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.logger('dev'));
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');

这些护照中间件警告是否记录在任何地方?项目 README 提供了一个示例,我在该顺序中包含了这些中间件,但我怀疑另一个中间件集或使用正在破坏我。任何人都可以为我阐明这一点吗?

4

2 回答 2

3

您不小心切换了您的参数resreq形式参数。应该:

exports.logout = function(req, res){
  req.logout();
  res.redirect('/');
}
于 2013-10-23T04:27:26.737 回答
0

看起来你切换了 req 和 res。

Error: Object #ServerResponse has no method 'logout'

ServerResponse 是 res 不是 req。

于 2013-10-23T04:29:42.107 回答