2017-03-29 17 views
0

node.jsExpress 4を使用しています。私はconnect-flashの初期化に問題があります。私はさまざまな答えで多くの質問を見て、私はまだ私の問題を解決することはできません。 req.flashは関数ではありません - 初期化の順序

var app = express(); 
var index = require('./routes/index'); 
var users = require('./routes/users'); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(cookieParser()); 
app.use(sassMiddleware({ 
    src: __dirname + '/public/sass', 
    dest: path.join(__dirname, 'public/css'), 
    debug: true, 
    outputStyle: 'compressed', 
    prefix: '/css' 
})); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(session({ 
    secret: 'secret', 
    saveUninitialized: true, 
    resave: true 
})); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(flash()); 
app.use(expressValidator({ 
    errorFormatter: function(param, msg, value) { 
     var namespace = param.split('.') 
     , root = namespace.shift() 
     , formParam = root; 

    while(namespace.length) { 
     formParam += '[' + namespace.shift() + ']'; 
    } 
    return { 
     param : formParam, 
     msg : msg, 
     value : value 
    }; 
    } 
})); 
app.use(i18n({ 
    translationsPath: path.join(__dirname, './locales'), 
    siteLangs: ["es","en"] 
})); 
app.use(function (res,req,next) { 
    res.locals.success_msg = req.flash('success_msg'); 
    res.locals.error_msg = req.flash('error_msg'); 
    res.locals.error = req.flash('error'); 
    next(); 
}); 

app.use('/', index); 
app.use('/users', users); 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 
app.use(function(err, req, res, next) { 
    // set locals, only providing error in development 
    res.locals.message = err.message; 
    res.locals.error = req.app.get('env') === 'development' ? err : {}; 

    // render the error page 
    res.status(err.status || 500); 
    res.render('error'); 
}); 

はあなたの助けをありがとう:私はapp.use()順、まだ TypeError req.flash is not a function

を得てここに私の現在の初期化順序があり、多くの組み合わせを試してみました。

+0

「フラッシュ」はどこから来ますか?私はあなたのコードで定義されて表示されません –

+0

const flash = require( 'connect-flash');ファイルの先頭にすべての定義は正しいです – raold

答えて

1
app.use(function (res,req,next) { 
    //... 
}) 

この関数のreqとresパラメータの順序が間違っています。

+0

ああ、はい。あなたは私の人生の時間を節約しました。ありがとう – raold

関連する問題