【问题标题】:Flash message won't display in client side, how to solve?客户端不显示Flash消息,如何解决?
【发布时间】:2020-07-09 16:42:15
【问题描述】:

我一直在关注这个youtube tutorial,我正在尝试弄清楚如何使用connect-flash npm。这是我正在使用的代码:

服务器端:

//app.js
const session = require('express-session');
const flash = require('connect-flash');

app.use(session({
  name: SESSION_NAME,
  resave: false,
  saveUninitialized: false,
  secret: SESSION_SECRET,
  cookie: {
      maxAge: SESSION_LIFETIME,
      sameSite: true,
      secure: IN_PROD
  }
}));
app.use(flash());

//users.js
//somewhere in USER LOGIN POST REQUEST:
if(!results.length) {
    console.log("    > Cannot fetch user from the database");
    req.flash('flash', 'some message in the alert');
    return res.redirect('/user_login');
}      

//USER LOGIN GET REQUEST:
router.get('/user_login', redirectHome, (req, res) => { 
    return res.render('userEntries/login', {message: req.flash('flash')});
});

客户端 (EJS)

<body>
    <% if(message.length > 0) { %>
        <div class="alert alert-success" style="text-align: center">
            <button type="button" class="close" data-dismiss="alert">&times;</button>
            <strong>INTRO: </strong>  <%= message %>
        </div>
    <% }%>
    ......

现在,postget 请求在我的应用程序中工作正常,但我不知道为什么 flash 消息不起作用。这些是我尝试过的东西:

  • 在EJS声明中:我也试过if(message){...}
  • 我尝试将 Flash 消息保存在 req.locals
  • 我已尝试使用此 tutorial - 也没有用。

请注意,有时警报会起作用,有时消息会被多次传递!在下图中,我添加了两次无效的用户名和密码,等待了大约。五分钟,然后重新加载页面,发生了什么:

我不知道我做错了什么。如果您有任何有用的信息,请告诉我。谢谢

【问题讨论】:

  • 在没有 if 的情况下打印 会显示什么?我认为它应该是空数组或对象,当出现错误时它会打印什么?对象还是数组?
  • 我已经重新启动了我的节点服务器,并添加了&lt;p id="test9"&gt;&lt;%= message %&gt;&lt;/p&gt;&lt;script&gt;console.log(document.getElementById("test9"));&lt;/script&gt;,即使没有发出请求,它也会返回&lt;p id="test9"&gt;some message in the alert&lt;/p&gt;
  • 现在过了一段时间,我重新加载了页面,它返回&lt;p id="test9"&gt;&lt;/p&gt;先前的请求和&lt;p id="test9"&gt;&lt;/p&gt;当请求发出时!当我刷新页面时,它会返回:&lt;p id="test9"&gt;some message in the alert&lt;/p&gt;

标签: node.js express ejs express-session connect-flash


【解决方案1】:

这是因为您正在打印这样的错误

   <%= message %>

它不起作用,因为 message 是一个数组。 您可以如下所示显示您的错误

    <%= message[0] %>

或 你可以遍历你的消息数组。

 for( m of message) {
         <%= m %>
 }

【讨论】:

  • 我会试一试,让你知道这是否有效!感谢您的回复@DharmikPatel
  • 没问题。 @LoizosVasileiou
猜你喜欢
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 2021-09-04
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多