我是node.js的新手,并且我在使用常规js的客户端中工作,但出现此错误:
错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置
我的服务器代码是:
app.get('/connect', function (req, res) {
console.log("connect to the user");
res.sendFile(path.join(__dirname, 'client', 'connect.html'));
});
app.post('/connect', function (req, res) {
const userNameEnter = req.body.userName;
const passwordEnter = req.body.password;
// //entering if the user and pass are correct
if (userNameEnter !== undefined && passwordEnter !== undefined) {
User.findOne({ userName: userNameEnter }, function (err, user) {
console.log(err);
if (user !== null) { //can enter
if (user.userPassword === passwordEnter) {
res.json({
status: "seccess",
user: "canEnter"
});
console.log("can enter");
res.redirect("/gameManage/" + user.id);
} else {//cant enter
res.json({
status: "seccess",
user: "notOk"
});
}
} else {//cant enter
res.json({
status: "seccess",
user: "notOk"
});
console.log("cant enter");
}
});
}
console.log(newUser);
});
我必须发送JSON,因为js需要知道下一步该怎么做。 如何以另一种方式重定向它,以便在URL行中包含userId的参数?
答案 0 :(得分:1)
您不能将响应发送到客户端,然后还要重定向客户端。您应该将重定向路径发送到客户端,然后使用javascript
从客户端重定向res.json({
status: "seccess",
user: "canEnter",
redirectPath: "/gameManage/" + user.id
});
在客户端
if (response.redirectPath) {
window.location.href = response.redirectPath;
}