*.ejs 文件中的变量错误

Error for variable in a *.ejs file

我正在按照此处的指南进行操作:https://www.danielgynn.com/build-an-authentication-app-using-express-node-passport/ 并且一切正常,除了当我进入登录屏幕时出现此错误:

..... 7| >> 8| <% if (message != null) { %> 9| <%= message %> 10| <% } %> 11| message is not defined

完整错误图片:http://imgur.com/a/hlChC

我认为这里指的是 login.ejs 文件中的这一行代码:

<% if (message != null) { %>
  <div class="alert-danger"><%= message %></div>
<% } %>

问题是我看不出代码有什么问题?注册页面完全相同。如果无论如何登录都是错误的,那应该只显示一条消息。我觉得这是一个标准的代码行,一开始就不应该出错?

如果我注释掉这些行,它就可以正常工作。

相关代码的其他部分:

//index.js (router)
router.get('/login', function(req, res, next) {
    res.render('login.ejs', { messag: req.flash('loginMessage') });
});

router.get('/logout', function(req, res) {
    req.logout();
    res.redirect('/');
});

router.post('/signup', passport.authenticate('local-signup', {  
  successRedirect: '/profile',
  failureRedirect: '/signup',
  failureFlash: true,
}));

router.post('/login', passport.authenticate('local-login', {  
  successRedirect: '/profile',
  failureRedirect: '/login',
  failureFlash: true,
}));

最后是我的 passport.js 文件:http://pastebin.com/swXJMPzi

唯一看起来不对劲的是,在我的 passport.js 文件中,我的注册页面的 req.flash 消息是 "signupMessage",但在我的 index.js登录和注册变量都是 "loginMessage"。但是注册工作正常.. 显示错误很好.. 登录只是从一开始就无法正确显示。

这快把我逼疯了,谢谢任何帮助

你打错了:

res.render('login.ejs', { messag: req.flash('loginMessage') });

messag 应该是 message:

res.render('login.ejs', { message: req.flash('loginMessage') });

希望对您有所帮助。