1. ホーム
  2. バックエンド
  3. ノード

Expressのエラーを解決する。送信後にヘッダーを設定できない。

2022-01-21 11:12:01

エラーです。送信後にヘッダーを設定できません。

原因となる問題点は res.send メッセージは常に送信されている

<スパン 解決策

response.end()を使ってレスポンスを送信する場合は、return response.end()と、returnを付けたresponse.send()などの関数を事前に追加してください。 しかも、リクエストaに対するレスポンスでreturnを付加していなくても、リクエストbが来たときにエラーを報告する、というものばかりです。

  例

  1. app.use(function (err, req, res, next) {
  2. return res.status(err.status || 500).send({
  3. message: err.message,
  4. error: {},
  5. title: 'error'
  6. });
  7. });

  1. router.post('/login', (req, res) => {
  2. var sess = req.session;
  3. var user = findUser(req.body.name, req.body.pwd);
  4. console.log(user);
  5. if (user) {
  6. req.session.regenerate(function(err) {
  7. if (err) {
  8. return res.json({ code: 2, msg: 'Login failed' });
  9. }
  10. req.session.loginUser = user.name;
  11. return res.json({ code: 0, msg: 'Login successful' });
  12. });
  13. } else {
  14. return res.json({ code: 1, msg: 'Account or password error' });
  15. }
  16. });