错误:错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头

时间:2020-06-03 11:35:33

标签: javascript node.js

我是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的参数?

1 个答案:

答案 0 :(得分:1)

您不能将响应发送到客户端,然后还要重定向客户端。您应该将重定向路径发送到客户端,然后使用javascript

从客户端重定向
res.json({
     status: "seccess",
     user: "canEnter",
     redirectPath: "/gameManage/" + user.id
});

在客户端

if (response.redirectPath) {
    window.location.href = response.redirectPath;
}