ejs中<%- message %>报错message is not defined
1、问题描述:最近在学习node.js,我把ejs引擎替换为html,在html中使用<%- message %>,然而它并没有接收到我的传值,并且报message is not defined。
2、代码如下:
app.js中:
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.use(function(req,res,next){
res.locals.user = req.session.user; // 从session 获取 user对象
var err = req.session.error; //获取错误信息
delete req.session.error;
res.locals.message = ""; // 有错误信息展示err信息,没有则什么都不展示。
if(err){
res.locals.message = '<div class="alert alert-danger" style="margin-bottom:20px;color:red;">'+err+'</div>';
}
next(); //中间件传递
});
router.route('/login').get(function (req, res) {
if (req.session.user) {
res.redirect('/home');
}
res.render('login', {title: '用户登录'});
}).post(function (req, res) {
var user = {
username: 'admin',
password: '123456'
}
if (req.body.username === user.username) {
req.session.user = user;
res.redirect('/home');
} else {
req.session.error = '用户名或密码不正确';
res.redirect('/login');
}
});
学习阶段,代码很简单,模拟一个登陆,用户名输入不是admin的话, req.session.error = '用户名或密码不正确',传值给res.locals.message,然后传到页面。我是这样想的
有哪位前辈遇到过这种问题,html里面的<%- message%>为什么接收不到res.locals.message的值?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你render到页面的代码在哪里?贴出来一起看一下
https://cnodejs.org/topic/540...里说写成locals.message
确实不报错了,但也读不出变量啊。
文章页传变量没问题,网站首页传user没问题,其他变量就总是报错undefined。
app.js里确实写了res.locals.user = req.session.user;
你要把
放到你跳转路由的上面就可以了
放到下面,发现路由先跳转就执行不到这里了