ejs中<%- message %>报错message is not defined

发布于 2022-09-04 13:07:47 字数 1301 浏览 31 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冧九 2022-09-11 13:07:47

你render到页面的代码在哪里?贴出来一起看一下

讽刺将军 2022-09-11 13:07:47

https://cnodejs.org/topic/540...里说写成locals.message
确实不报错了,但也读不出变量啊。
文章页传变量没问题,网站首页传user没问题,其他变量就总是报错undefined。
app.js里确实写了res.locals.user = req.session.user;

看透却不说透 2022-09-11 13:07:47

你要把

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();  //中间件传递
});

放到你跳转路由的上面就可以了

放到下面,发现路由先跳转就执行不到这里了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文