代码之家  ›  专栏  ›  技术社区  ›  Constantine

REQ.FLASH不与RES.REDIRECT一起工作

  •  0
  • Constantine  · 技术社区  · 7 年前

    我对node和express世界有点陌生,所以请原谅我的任何高贵错误,我有两种方法可以在我使用类似的东西之后返回我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=需要(“fs”);
    const bcrypt=需要(“bcryptjs”);
    const app=需要(“../app”);
    const user=需要(“../model/user”);
    const passport=要求(“passport”);
    let path=require('path');
    router.get('/user profile',(req,res,next)=>。{
    res.render(“配置文件”,){
    标题:'配置文件'
    (});
    (});
    
    router.get('/logout',(req,res,next)=>。{
    Req.LogOUT();
    req.flash(“成功”,“您已注销”);
    res.redirect(“/login”);
    (});
    < /代码> 
    
    

    我的app.js中的代码

    快速消息中间件 应用程序使用(需要(“connect-flash”)); 应用程序使用(功能(req,res,next){ res.locals.messages=require('express-messages')(req,res); (下); (}); < /代码>

    我试着在网上找到解决方案,但没能使它起作用。我真的发现很难调试,任何帮助都会非常感谢。

    refrence to the error

    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();
    });
    

    我试着在网上找到解决方案,但没能使它起作用。我真的发现很难调试,任何帮助都会非常感谢。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Constantine    7 年前

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

    推荐文章