6

Node.js と Express の使用中に次のエラーが発生します。ここに私のバージョンがあります:

Node : v0.8.8
Express: 3.0.0rc3

ページにアクセスしようとすると、次のエラーが発生します。

TypeError: Object #<IncomingMessage> has no method 'flash'
    at routes (/Users/nblavoie/Desktop/HotPie/HotPie/apps/authentication/routes.js:23:8)

app.use(app.router); を削除しようとしました。app.js から成功しませんでした。エラーの原因となるコードは次のとおりです。req.flash 行を参照してください。

app.post('/sessions', function(req, res)
{
    if(req.body.user == 'piechief' 
        && req.body.password == '12345')
    {
        req.session.currentUser = req.body.user;
        req.flash('info', "You're logged in as #{req.session.currentUser}");
        res.redirect("/login");
        return;
    }
    else
    {
        req.flash('error', "Those credentials were incorrect. Try again.");
        res.redirect("/login");
        return;
    }
});

これが私の app.js の興味深い部分です:

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser());
  app.use(express.session({
    secret: "DBBD6BE563419EDB0E5CBD228E603D4AD232CE05434B4FA95C6908B64EA515C3",
    store: new RedisStore({
      host: "127.0.0.1",
      port: "6379",
      db: "mydb"
    })
  }));
  app.use(app.router);
  app.use(express.static(path.join(__dirname, '/public')));
});

何かアイデアはありますか?Express'flash のドキュメントを一通り読んだのですが、何が間違っているのかわかりません。

4

2 に答える 2

25

req.flash3.0 で削除されました:

  • req.flash()(セッションを使用するだけです:req.session.messages = ['foo']または同様のもの)
  • connect-flashをミドルウェアとして使用して req.flash() を提供できます
于 2012-08-25T12:23:55.953 に答える
5

これで解決しました

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

これで私のパスポート app.configure は次のようになります。

app.configure(function (){
    app.use(express.cookieParser('keyboard cat'));
    app.use(express.session({ cookie: { maxAge: 60000 }}));
    app.use(passport.initialize());
    app.use(passport.session());
    app.use(flash());
})
于 2014-03-13T14:56:20.150 に答える