提问者:小点点

在Node.js中发送标题后无法设置标题


我试图在成功登录后重定向到homepage.html。 但我得到错误和页面没有显示。 我知道这可能是由于2个回复发送或类似的东西。 我之前在stackoverflow上发过这个问题,但没有得到任何答复。如果有人能帮我的话,我真的很愿意回答:)

我还使用了return response.redirect('/home');,正如其中一个答案中所说的那样,但仍然没有任何效果。

在home路由中,我有一个console.log,它正在工作,但文件没有显示。 所以我猜代码正在重定向到/home,但没有打开文件。

当我使用console.log(response.HeadersSent);时,它显示为false。

app.post('/auth', function(request, response) {
    var number = request.body.number;
    var password = request.body.pwd;

     if (number && password) {
    var sql = `SELECT 
            fyp_helpers.Mobile_number AS number,
            fyp_helpers.Password AS  Password
        FROM fyp_helpers 
        WHERE Mobile_number = ? 
    UNION 
        SELECT 
            fyp_employers.Employer_Contact AS number ,
            fyp_employers.Employer_Password AS Employer_Password
        FROM fyp_employers 
        WHERE Employer_Contact = ?`;
    connection.query(sql, [number, number], function (error, results, fields) {
        if (results.length > 0) {
            var hashedPassword = results[0].Password;
            bcrypt.compare(password, hashedPassword, function (cryptErr, cryptResult) {
                if (cryptResult) {
                    request.session.loggedin = true;
                    request.session.number = number;
                    return response.redirect('/home');
                } else {
                    response.send('Incorrect Password!');
                    console.log(cryptErr);
                }
               
            });
        } else {
            response.send('User not registered');
        }
    });
}
        else {
        response.send('Please enter Username and Password!');
        response.end();
    }

});


app.get('/home', function(request, response) {
    if (request.session.loggedin) {
       console.log('I am home'); 
         response.sendFile(path.join(__dirname + '/HomePage.html'));
    } else {
        response.send('Please login to view this page!');
    }
    response.end();
});
app.listen(3000);

这里有一个错误。


共1个答案

匿名用户

您不是在等待回调函数。 您应该对connection.query使用promise,并使用async显式地等待它返回。

相关问题和一个好的答案可以在这里找到。