新手报道-NodeJS开发指南的博客(Nodejs)
新手报道-NodeJS开发指南的博客(Nodejs)
终于搞定一大半了,完全没按照书上的思路走。书上的路一走一个死,req,flash()这个东西还是无法使用,求解释。
“express”: “~3.4.8”, “static-favicon”: “~1.0.0”, “morgan”: “~1.0.0”, “cookie-parser”: “~1.0.1”, “body-parser”: “~1.0.0”, “debug”: “~0.7.4”, “ejs”: “~0.8.5”
这是各个的版本号,数据库我用的Mysql
新手报道-NodeJS开发指南的博客(Nodejs)
大家好,我是刚刚开始学习Node.js的新手。最近在尝试构建一个简单的Web应用,并遇到了一些问题。尽管我参考了一些书籍和教程,但发现直接照搬书中的代码并不能很好地运行。特别是在使用req.flash()
时遇到了困难,希望有经验的朋友能给我一些指导。
首先,介绍一下我的项目环境:
{
"dependencies": {
"express": "~3.4.8",
"static-favicon": "~1.0.0",
"morgan": "~1.0.0",
"cookie-parser": "~1.0.1",
"body-parser": "~1.0.0",
"debug": "~0.7.4",
"ejs": "~0.8.5"
}
}
另外,我使用的数据库是MySQL。接下来,我会分享一下我在项目中遇到的一些问题以及解决方法。
问题一:req.flash()
无法使用
在Express 3.x版本中,req.flash()
并不是默认支持的功能。要使用Flash消息,你需要安装额外的中间件,比如connect-flash
。以下是如何安装并配置它的步骤:
-
安装
connect-flash
:npm install connect-flash --save
-
在你的Express应用中引入并配置
connect-flash
:var express = require('express'); var flash = require('connect-flash'); var app = express(); // 使用中间件 app.use(flash()); // 示例:在路由中设置Flash消息 app.get('/login', function(req, res) { req.flash('error', '用户名或密码错误!'); res.redirect('/'); }); // 在视图中显示Flash消息 app.get('/', function(req, res) { res.render('index', { messages: req.flash('error') }); }); app.listen(3000);
-
在视图文件(例如EJS模板)中显示Flash消息:
<% if (messages && messages.error) { %> <div class="alert alert-danger"> <%= messages.error %> </div> <% } %>
通过上述步骤,你就可以在Express 3.x应用中使用Flash消息功能了。
希望这些信息对你有所帮助!如果你还有其他问题,欢迎继续交流。
说一个我做的时候碰到flash不能用的情况吧:
app.set('view engine', 'ejs');
app.use(flash());
flash这个middleware 必须放在view engine后面,之后跟body parse什么的
当然最重要的是,dependencies里面别忘了
"connect-flash": "*"
已经安装了connect-flash,添加了app.use(flash())
index.ejs里面是 req.flash(“error”,“错误”); 通过res.locals.error=req.flash(“error”)什么出来的都没值; 如果是res.locals.error="错误"就能行,显示的是什么 req.flash.什么 session
编码问题吗? 把错误这个中文换成error英文试试
res.render('index', {
title: 'Home Page',
user: req.session.user,
posts: posts,
success: req.flash('success').toString(),
error: req.flash('error').toString()
});