簡體   English   中英

發送到客戶端錯誤后無法設置標頭

[英]Cannot set headers after they are sent to the client error

我有一個使用postgresql進行身份驗證的登錄表單我正在嘗試檢查用戶是否存在然后將客戶端重定向到另一個頁面。 代碼是:

app.post('/login', (req, res) => {

  var Enteredusername = req.body.username;
  var Enteredpassword = req.body.password;

  pool.query("SELECT * FROM tbl_users WHERE username = $1 AND password = $2", [Enteredusername, Enteredpassword], (err, result) => {
    if (err) return console.log('error in query', err);
    // need to check if user exists
    let user = (result.rows.length > 0) ? result.rows[0] : null;
    if (!user) {

      req.flash('notify', 'This is a test notification.')
      res.render('login', {
        messages: req.flash('Username or Password is incorrect !')
      });
      return res.redirect('/login')

    }
    res.redirect('/posts')

  });
});

我收到了錯誤:

_http_outgoing.js:470拋出新的ERR_HTTP_HEADERS_SENT('set');

錯誤[ERR_HTTP_HEADERS_SENT]:無法在將標頭發送到客戶端后設置標頭。

我該如何解決?

這是javascript的異步行為res.redirect('/posts')req.flashres.render之前執行你可以像這樣破解它:

req.session.userId = Enteredusername;

if (!user) {

  req.flash('notify', 'This is a test notification.')
  res.render('login', {
    messages: req.flash('Username or Password is incorrect !')
  });

  return res.redirect('/login')

}else{
    return res.redirect('/posts')
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM