2

私はNodeJSを初めて使用し、Express3.0でアプリを構築しようとしています。これには、認証目的のパスポートローカル戦略が含まれています。しかし、次の例外 (req.flash に関して) が進行を妨げています。

次の行で例外が発生します。
res.render('login', { user: req.user, message: req.flash('error') });
特急
500 TypeError: オブジェクト # にはメソッド 'flash' がありません

    /Users/vivekanandan/Source/Git/ExpressApp/CosmicEnergyCoupled/app.js:115:54 で
    コールバック時 (/Users/vivekanandan/Source/Git/ExpressApp/CosmicEnergyCoupled/node_modules/express/lib/router/index.js:162:37)
    パラメータで (/Users/vivekanandan/Source/Git/ExpressApp/CosmicEnergyCoupled/node_modules/express/lib/router/index.js:136:11)
    パスで (/Users/vivekanandan/Source/Git/ExpressApp/CosmicEnergyCoupled/node_modules/express/lib/router/index.js:143:5)
    Router._dispatch で (/Users/vivekanandan/Source/Git/ExpressApp/CosmicEnergyCoupled/node_modules/express/lib/router/index.js:171:5)
    Object.router (/Users/vivekanandan/Source/Git/ExpressApp/CosmicEnergyCoupled/node_modules/express/lib/router/index.js:33:10) で
    次に (/Users/vivekanandan/Source/Git/ExpressApp/CosmicEnergyCoupled/node_modules/express/node_modules/connect/lib/proto.js:190:15)
    store.get.next (/Users/vivekanandan/Source/Git/ExpressApp/CosmicEnergyCoupled/node_modules/express/node_modules/connect/lib/middleware/session.js:310:9)
    /Users/vivekanandan/Source/Git/ExpressApp/CosmicEnergyCoupled/node_modules/express/node_modules/connect/lib/middleware/session.js:333:9 で
    /Users/vivekanandan/Source/Git/ExpressApp/CosmicEnergyCoupled/node_modules/express/node_modules/connect/lib/middleware/session/memory.js:52:9 で


著者のアドバイスに従って、非推奨の req.flash メソッドを回復するために connect-flash をインストールしました (passport-local-strategy)。アプリにインストールされている npm パッケージを見つけてください。

├── connect-flash@0.1.0
├── ejs@0.8.3
├── ejs-locals@0.2.5
├─┬ express@3.0.0
│ ├──司令官@0.6.1
│ ├─┬ connect@2.6.0
│ │ ├──バイト@0.1.0
│ │ ├──恐るべき@1.0.11
│ │ ├──pause@0.0.1
│ │ ├── qs@0.5.1
│ │ └─┬ send@0.0.4
│ │ └── mime@1.2.6
│ ├── cookie@0.0.4
│ ├── crc@0.2.0
│ ├── debug@0.7.0
│ ├── fresh@0.1.0
│ ├── Methods@0.0.1
│ ├── mkdirp@0.3.3
│ ├── range-parser@0.0.4
│ └─┬ send@0.1.0
│ └── mime@1.2.6
├─┬ パスポート@0.1.12
│ └── pkginfo@0.2.3
├─┬ パスポート-local@0.1.6
│ ├──パスポート@0.1.12
│ └── pkginfo@0.2.3
├─┬ socket.io@0.9.10
│ ├── policyfile@0.0.4
│ ├── redis@0.7.2
│ └─┬ socket.io-client@0.9.10
│ ├─┬ active-x-obfuscator@0.0.1
│ │ └── zeparser@0.0.5
│ ├──uglify-js@1.2.5
│ ├─┬ ws@0.4.22
│ │ ├──司令官@0.6.1
│ │ ├── options@0.0.3
│ │ └── tinycolor@0.0.1
│ └── xmlhttprequest@1.4.2
└─┬ スタイラス@0.30.1
  ├── cssom@0.2.5
  ├──debug@0.7.0
  └──mkdirp@0.3.4
4

2 に答える 2

0

これをメインの app.configure メソッドに追加してみてください

app.use(flash());
于 2012-10-30T09:18:58.150 に答える
0
npm install connect-flash --save

var flash = require('connect-flash')
app.use(flash());

使い方が間違っていると思います。res.redirect の前に、タイプとメッセージを指定して req.flash() を呼び出すだけです。

   req.flash('info', 'Welcome to the site, a welcome email has been sent to you.');
   res.redirect('/');
于 2012-10-30T09:22:17.077 に答える