javascript - Flash 消息无法正常工作 express/nodejs/ejs

标签 javascript node.js html flash-message

Flash 消息似乎不起作用,我想我遗漏了一些非常明显的东西,但我已经研究了一个小时,但我仍然不知道为什么它不起作用。

我的中间件:

// Session middleware
app.use(session({
  secret: 'stuffedbagels',
  resave: true,
  saveUninitialized: true
}));

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

应用路由,仅供测试。

// Route that creates a flash message using the express-flash module
app.all('/express-flash', function( req, res ) {
    req.flash('success', 'This is a flash message using the express-flash module.');
    res.redirect(301, '/');
});

模板(直接从他们的 github 上复制)

<div id="messages">
<% Object.keys(messages).forEach(function (type) { %>
  <ul class="<%= type %>">
  <% messages[type].forEach(function (message) { %>
    <li><%= message %></li>
  <% }) %>
  </ul>
<% }) %>
</div>

我是如何渲染它的

<%- messages('msg_temp', locals) %>

现在我不确定出了什么问题,我已经尝试了在这里和通过谷歌找到的所有可能的修复方法,但它似乎并不想工作。

最佳答案

您需要使用错误/成功等键设置消息

req.flash('success', "hello flash");

并且您将在 res.locals 中获得相同的 key ,或者可以在呈现 View 时说出相同的 key

            {% if success %}
            <div class="alert alert-success alert-dismissable">
                    <button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
                 {{ success }}
            </div>
{% endif %}

注意: 在 session cookie 中闪存存储 key ,消息仅刷新一次

关于javascript - Flash 消息无法正常工作 express/nodejs/ejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47785543/

相关文章:

c# - 可以使用 API GET 但不能使用 API POST

javascript - 如何在单个 html 文件中构建 Angular 应用程序,并将所有脚本内联?

node.js - 即使配置了express.static,express.js也无法访问静态文件

html - 在顶部为 <li> 中的事件链接添加一个 bg-image,可能吗?

html - 如何阻止我的 css 声明被覆盖

javascript - 表单不提交 ASP.NET MVC 中的值

javascript - 我需要在 js 中创建我的 CSS 类的多个实例

javascript - 如何更新此数据而不重新绘制已有的数据点?

javascript - 如何使用 Node.js 和 mongodb 存储 session 值?

javascript - 为什么 fs.readFile 返回一个缓冲区?