node.js - 为什么 connect-flash 的 'message' 未定义?

标签 node.js express alert connect-flash

我正在构建一个快速应用程序,当用户填写表单时;如果成功,他们将看到一条确认提交的警报。

在我的 server.js 文件中,我声明

var cookieParser = require("cookie-parser"),
session = require("express-session"),
flash = require("connect-flash"),
app = express();

随后:

app.use(cookieParser("keyboard cat"));
app.use(session({ 
    cookie: { maxAge: 60000 },
    secret: "keyboard cat" 
}));
app.use(flash());
require("./server/config/routes.js")(app);`

我的路线文件:

app.get("/", function(req, res){
    res.render("index", { message: req.flash("success") });
});

app.post("/sendMsg", function(req, res){
    mainController.sendMsg(req, res);
});

app.get("/sentSuccess", function(req, res){
    req.flash("success", "Thanks!");
    res.redirect("/");
});

最后在我的 main.js 文件中进行 jquery 调用(我使用 SweetAlert 进行警报样式设置):

$(document).ready(function(){
if(message){
    var frm = document.getElementsByName('msgForm')[0];
    swal({
        title: "Sweet!",
        text: "Thanks",
        imageUrl: "javascripts/sweetalert/thumbs-up.jpg"
    });
    frm.reset();
}
});

我遇到的问题是客户端控制台上的Uncaught ReferenceError:消息未定义。我已通读https://www.npmjs.com/package/connect-flash并查看了 https://github.com/jaredhanson/connect-flash/tree/master/examples/express3 中的示例但我不确定为什么消息没有被传回。

最佳答案

添加中间件:

app.use(flash());
app.use(function(req, res, next){
  res.locals.messages = req.flash();
  next();
});

然后在前端使用消息

关于node.js - 为什么 connect-flash 的 'message' 未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31757716/

相关文章:

angularjs - 使用 multipartFile 上传图像的注册表单

javascript - 在 Javascript 中返回一个变化的 key 表单 JSON

node.js - 如何使用 mongoose/mongodb 在单个查询中应用 $match、$group 和 $sum

reactjs - 捆绑 React/Express 应用程序用于生产

javascript - Busboy不会收到上传的文件

javascript - 如何设计或自定义 React-admin 警报对话框?

html - 使用 CSS 的信息框 - Bootstrap

javascript - 有没有办法在 Node.js 中处理 "eat"事件?

node.js - 如何仅在丢失的路线上将 Express.js 设置为 404?

javascript - 网站上有一个与警报一起使用的代码,但在满足 if 条件时不会链接到另一个网站