在 node.js 中发送后无法设置 headers
can't set headers after they are sent in node.js
我正在尝试在成功登录后重定向到 Homepage.html。但我收到错误消息,页面未显示。我知道这可能是由于发送了 2 个回复或类似的原因。我已经在 Whosebug 上发布了这个问题,但没有得到任何 answer.I 如果有人能帮助我,我真的很感激 :)
我也使用了 return response.redirect('/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);
这里是错误。
您不是在等待回调函数。您应该为 connection.query
使用承诺,并使用 async
到 return.
显式等待它
相关问题可以找到很好的答案。
我正在尝试在成功登录后重定向到 Homepage.html。但我收到错误消息,页面未显示。我知道这可能是由于发送了 2 个回复或类似的原因。我已经在 Whosebug 上发布了这个问题,但没有得到任何 answer.I 如果有人能帮助我,我真的很感激 :)
我也使用了 return response.redirect('/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);
这里是错误。
您不是在等待回调函数。您应该为 connection.query
使用承诺,并使用 async
到 return.
相关问题可以找到很好的答案