2016-05-16 8 views
1

を実施した後、私はこのようなREQ-フラッシュを実施しました。 これを実行した後、次のエラーが表示されますExpressjs/AngularJS:<a href="https://www.npmjs.com/package/req-flash" rel="nofollow">https://www.npmjs.com/package/req-flash</a>:エラーREQ-フラッシュ

module.exports = function(options) { 
if (options.locals) { 
    localsKey = options.locals; 
} 

return flash; 
}; 

これは私のapp.jsのイントロです:

D:\_SOURCES\smfc\node_modules\req-flash\index.js:36 
     if (options.locals) { 
       ^

TypeError: Cannot read property 'locals' of undefined 
    at module.exports (D:\_SOURCES\smfc\node_modules\req-flash\index.js:36:13) 
    at Object.<anonymous> (D:\_SOURCES\smfc\routes\index.js:6:13) 
    at Module._compile (module.js:413:34) 
    at Object.Module._extensions..js (module.js:422:10) 
    at Module.load (module.js:357:32) 
    at Function.Module._load (module.js:314:12) 
    at Module.require (module.js:367:17) 
    at require (internal/module.js:16:19) 
    at Object.<anonymous> (D:\_SOURCES\smfc\app.js:15:14) 
    at Module._compile (module.js:413:34) 
    at Object.Module._extensions..js (module.js:422:10) 
    at Module.load (module.js:357:32) 
    at Function.Module._load (module.js:314:12) 
    at Module.require (module.js:367:17) 
    at require (internal/module.js:16:19) 
    at Object.<anonymous> (D:\_SOURCES\smfc\bin\www:7:11) 

これはREQ-フラッシュからindex.jsの一部です。

var mongoose = require('mongoose'); 

require('./models/SupermarketGroups'); 
mongoose.connect('mongodb://smfc:[email protected]:11482/smfc'); 

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var session  = require('express-session'); 
var bodyParser = require('body-parser'); 
var flash = require('req-flash'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ 
    extended: false 
})); 
app.use(cookieParser()); 
app.use(session({ secret: '123' })); 
app.use(flash()); 

app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 

は私のコードの何が問題になっているのですか?

+0

問題は 'flash'コンストラクタ関数は、それが'フラッシュのような呼び出しを期待意味** 'options'オブジェクトは**常にで渡されることを期待していることである({/ *期待optionsオブジェクト* /})'。あなたがここで何をしているのかを渡さないと、適切なフォールバックはありません。フラッシュ(/ *あなたは何も渡しません* /) '。したがって、オプションがない場合は、オプションオブジェクトを渡して空のオブジェクトを渡すことが最適です([Niveshが提案](http://stackoverflow.com/a/372​​56777/3928341)) ({}) ' – nem035

答えて

1

REQ-フラッシュモジュールにバグがあると思われます。あなたはノードのモジュールフォルダにREQ-フラッシュを開き、とindex.jsファイルを更新することができます

app.use(flash({})); 

のか:

module.exports = function(options) { 
if (options != null && options.locals) { 
    localsKey = options.locals; 
} 

return flash; 
}; 

はの説明: 今のあなたはそれが好きで使用することができます 定義されていない場合は、app.use(flash())のようにインスタンス化している間に渡されないオプションを扱いません。だから、オプションのチェックを入れたり、空のオブジェクトを渡したりするだけです。

+0

2番目のオプションは、おそらく良い考えではありません。 'npm install'が変更を消去するからです。 – nem035

+1

ええ、よく私はそれのためのプルの要求を作成しました。 – Nivesh

+0

明日は試してみます。ところで、これはユーザーにエラーを表示するための適切な解決策ですか? – etalon11

関連する問題