req.flash 无法使用 res.redirect

req.flash not working with the res.redirect

我对 node 和 express 世界有些陌生,所以请原谅我的任何 nobe 错误,我有几个方法在我使用类似的方法后返回 500。

req.flash('success', 'your password has been successfully changed.');
res.redirect('/user-profile');

我也试过用它发送状态

res.redirect(302,'/user-profile');

但也没有成功

并且当我尝试重新加载页面时它工作正常(第二次尝试),但是如果我评论 req.flash 一切都开始正常工作,似乎它在工作时引起了问题与我正在使用它的其他方法一样好

req.flash('success', 'You are logged out');
res.redirect('/login');

我的 index.js 文件中的代码

const express = require('express');
const router = express.Router();
const fs = require('fs');
const bcrypt = require('bcryptjs');
const app = require('../app');
const User = require('../model/user');
const passport = require('passport');
let path = require('path');
router.get('/user-profile', (req,res,next) => {
    res.render('profile',{
        title: 'Profile'
    });
});

router.get('/logout', (req,res,next) => {
    req.logout();
    req.flash('success', 'You are logged out');
    res.redirect('/login');
});

我的代码 app.js

// Express Messages Middleware
app.use(require('connect-flash')());
app.use(function (req, res, next) {
    res.locals.messages = require('express-messages')(req, res);
    next();
});

我试图在网上找到解决方案,但无法正常工作。我真的很难调试任何帮助将不胜感激。

很久以前就解决了我的错误,以防其他人面临同样的问题 problem.Here 就是答案。我的单个 ejs 文件中有 <%- messages() %> 的副本,这导致了最终导致应用程序崩溃的问题。