简体   繁体   English

RangeError [ERR_HTTP_INVALID_STATUS_CODE]:无效的状态代码:[object Object] 错误表达 4.16

[英]RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: [object Object] error express 4.16

I'm implementing a password reset and when clicking on the generated link I'm getting the following error,我正在实施密码重置,当单击生成的链接时,出现以下错误,

Thu Jan 25 2018 16:54:38 GMT+0000 (GMT): GET /users/reset/d590c54753abc449cfcd8aefceb8d519fce4b627
express deprecated res.redirect(url, status): Use res.redirect(status, url) instead routes/users.js:297:9
events.js:136
      throw er; // Unhandled 'error' event
      ^

RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: [object Object]
    at ServerResponse.writeHead (_http_server.js:193:11)
    at ServerResponse.writeHead (/Users/benbagley/Code/poetry-out-loud/node_modules/on-headers/index.js:55:19)
    at ServerResponse._implicitHeader (_http_server.js:184:8)
    at write_ (_http_outgoing.js:644:9)
    at ServerResponse.write (_http_outgoing.js:629:10)
    at writetop (/Users/benbagley/Code/poetry-out-loud/node_modules/express-session/index.js:290:26)
    at ServerResponse.end (/Users/benbagley/Code/poetry-out-loud/node_modules/express-session/index.js:338:16)
    at ServerResponse.redirect (/Users/benbagley/Code/poetry-out-loud/node_modules/express/lib/response.js:947:10)
    at /Users/benbagley/Code/poetry-out-loud/routes/users.js:297:9
    at model.Query.<anonymous> (/Users/benbagley/Code/poetry-out-loud/node_modules/mongoose/lib/model.js:4056:16)
    at /Users/benbagley/Code/poetry-out-loud/node_modules/kareem/index.js:273:21
    at /Users/benbagley/Code/poetry-out-loud/node_modules/kareem/index.js:131:16
    at process._tickCallback (internal/process/next_tick.js:150:11)
[nodemon] app crashed - waiting for file changes before starting...

Here are my routes这是我的路线

// Token URL :get
router.get('/users/reset/:token', (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.');
      res.redirect('/users/forgot');
    }

    res.redirect('reset.hbs', {
      pageTitle: 'Reset Your Password',
      user: req.user
    });
  });
});

// Token URL :post
router.post('/users/reset/:token', (req, res, next) => {
  if(req.body.password === req.body['password-confirm']) {
    next();
    return;
  }

  req.flash('error', 'Passwords do not match!');
  res.redirect('back');

  User.findOne({
    resetPasswordToken: req.params.token,
    resetPasswordExpires: { $gt: Date.now() }
  }, function(err, user) {
    if(!user) {
      req.flash('error', ' Password reset is invalid or has expired');
      res.redirect('/login');
    }

    const setPassword = promisify(user.setPassword, user);
    setPassword(req.body.password);
    user.resetPasswordToken = undefined;
    user.resetPasswordExpires = undefined;
    const updatedUser = user.save();
    req.login(updatedUser);
    req.flash('success_msg', 'Your password has been reset successfully! You are now logged in!');
    res.redirect('/dashboard');
  });
});

I think, I'm close to getting this to work, just a few errors I'm running into.我想,我快要让它工作了,只是我遇到了一些错误。 This being one of them.这是其中之一。 I have checked the documentation and I'm not seeing anything mentioning status codes, I believe this is a change in the recent framework, seems quite odd having to define a status code for every redirect or render.我已经检查了文档,但没有看到任何提及状态代码的内容,我相信这是最近框架中的一个变化,必须为每个重定向或渲染定义一个状态代码似乎很奇怪。

You have to use res.render instead of res.redirect :您必须使用res.render而不是res.redirect

res.render('reset.hbs', {
  pageTitle: 'Reset Your Password',
  user: req.user
});

res.redirect method accept the route string as arguement while res.render accept a string that represent the file path of the view to render res.redirect方法接受路由字符串作为参数,而res.render接受表示要渲染的视图文件路径的字符串

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 RangeError [ERR_HTTP_INVALID_STATUS_CODE]:无效状态代码:4 - RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: 4 我收到 RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: undefined - I am getting RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: undefined Node.js中的错误-UnhandledPromiseRejectionWarning:RangeError [ERR_HTTP_INVALID_STATUS_CODE] - Error in Node.js - UnhandledPromiseRejectionWarning: RangeError [ERR_HTTP_INVALID_STATUS_CODE] 如何修复 RangeError [ERR_HTTP_INVALID_STATUS_CODE]:无效状态代码:未定义我在尝试注册用户时收到此错误 - How to fix RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: undefined i got this error when am trying to register user 为什么我收到 ERR_HTTP_INVALID_STATUS_CODE? - Why I'm getting ERR_HTTP_INVALID_STATUS_CODE? ERR_HTTP_INVALID_STATUS_CODE — 登录网站失败时服务器关闭 - ERR_HTTP_INVALID_STATUS_CODE — server goes off when logging on the website fails 范围错误:无效状态代码:0 - RangeError: Invalid status code: 0 RangeError:无效状态代码:Express App中的0 - 会话问题? - RangeError: Invalid status code: 0 in Express App - Session issue? rangeError:无效的状态代码:0是什么意思? - What does rangeError: Invalid status code: 0 mean? 为什么“RangeError:无效状态代码:0”,firebase 函数 - Why "RangeError: Invalid status code: 0", firebase functions
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM