【问题标题】:Error for variable in a *.ejs file*.ejs 文件中的变量错误
【发布时间】:2017-03-28 12:04:42
【问题描述】:

我在这里遵循本指南:https://www.danielgynn.com/build-an-authentication-app-using-express-node-passport/,一切正常,除了当我进入登录屏幕时出现此错误:

..... 7| >> 8| 9| 10| 11|消息未定义

完整错误图片: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” .但是注册工作正常.. 显示错误就好了.. 登录从一开始就无法正确显示。

这让我发疯了,谢谢任何帮助

【问题讨论】:

    标签: javascript node.js express passport.js ejs


    【解决方案1】:

    你有一个错字:

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

    messag 应该是message:

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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多