【问题标题】:events.js throw er; // Unhandled 'error' event node.jsevents.js 抛出错误; // 未处理的“错误”事件 node.js
【发布时间】:2018-01-13 09:55:00
【问题描述】:

编辑 1

知道了

// Reset Password Token link :get
router.get('/users/reset-password/:token', function(req, res) {
  User.findOne({ resetPasswordToken: req.params.token, resetPasswordExpires: { $gt: Date.now() } }, function(err, user) {
    if (!user) {
      req.flash('error', 'Password reset token is invalid or has expired.');
      return res.redirect(302, '/users/new-password');
    }

    res.redirect(301, 'reset-password', {
      user: req.user
    });
  });
});

router.get('/users/new-password', function(req, res) {
  res.render('new-password', {
    pageTitle: 'New Password',
    User: req.user
  });
});

我必须指定一个获取路线,但这似乎真的不安全,因为我不希望任何人只访问此页面,也许我想多了?

--

原始问题

目前我正在设置重置密码系统系统,正在发送电子邮件并生成带有令牌的 url,但是当我单击链接转到新密码页面时,我得到以下内容

Fri Jan 12 2018 23:49:37 GMT+0000 (GMT): GET /users/reset-password/23afd201c93945bfec7131801b377ea92edfc1fa
express deprecated res.redirect(url, status): Use res.redirect(status, url) instead routes/users.js:298:9
events.js:136
      throw er; // Unhandled 'error' event
      ^

RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: [object Object]

这是我的路线

// Reset Password Token link :get
router.get('/users/reset-password/:token', function(req, res) {
  User.findOne({ resetPasswordToken: req.params.token, resetPasswordExpires: { $gt: Date.now() } }, function(err, user) {
    if (!user) {
      req.flash('error', 'Password reset token is invalid or has expired.');
      return res.redirect('/users/new-password');
    }

    res.redirect('/users/reset-password', {
      user: req.user
    });
  });
});

谢谢。

【问题讨论】:

  • 查看doc for res.redirect()。它有两个参数,一个可选的状态码和一个路径。没有像您尝试使用的对象的参数。因此,请使用res.redirect('/users/reset-password')res.redirect(302, '/users/reset-password')。如果您想在 URL 中放入查询字符串,请将其放入路径本身。
  • @jfriend00 查看上面对问题的编辑
  • 我不明白你认为问题仍然是什么?您的第一次编辑仍然显示 res.redirect() 的非法形式的参数。
  • @jfriend00 那我想多了,所以关于我的下一个问题,很奇怪,请你看看stackoverflow.com/questions/48236220/…

标签: javascript node.js nodemailer passport.js passport-local


【解决方案1】:

来自@jfriend00 的评论工作

Look at the doc for res.redirect(). It takes two parameters, an optional status code and a path. There is no parameter for an object like you are trying to use. So, either use res.redirect('/users/reset-password') or res.redirect(302, '/users/reset-password'). If you want to put a query string in the URL, then put that into the path itself. – jfriend00 14 mins ago 

【讨论】:

    猜你喜欢
    • 2019-01-08
    • 2019-05-04
    • 2018-10-03
    • 1970-01-01
    • 2020-01-16
    • 2020-10-10
    • 1970-01-01
    • 2016-12-14
    • 2017-05-06
    相关资源
    最近更新 更多