(节点:3236)UnhandledPromiseRejectionWarning:错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头

时间:2020-02-15 12:54:18

标签: javascript node.js express

我对node.js(以及整体编程)很陌生,并且在开发我的快速应用程序时遇到了错误。完整的错误消息是

(节点:12896)UnhandledPromiseRejectionWarning:错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头 在ServerResponse.setHeader(_http_outgoing.js:485:11) 在ServerResponse.header(C:\ Viktor Filer \ Matkort1.1 \ node_modules \ express \ lib \ response.js:771:10) 在ServerResponse.send(C:\ Viktor Filer \ Matkort1.1 \ node_modules \ express \ lib \ response.js:170:12) 在_callee $(C:\ Viktor Filer \ Matkort1.1 \ src \ routes / admin.js:39:24) 在tryCatch(C:\ Viktor Filer \ Matkort1.1 \ node_modules \ regenerator-runtime \ runtime.js:45:40) 在Generator.invoke [作为_invoke](C:\ Viktor Filer \ Matkort1.1 \ node_modules \ regenerator-runtime \ runtime.js:271:22) 在Generator.prototype中。 [下一个](C:\ Viktor Filer \ Matkort1.1 \ node_modules \ regenerator-runtime \ runtime.js:97:21) 在asyncGeneratorStep(C:\ Viktor Filer \ Matkort1.1 \ src \ routes \ admin.js:11:103) 在_next(C:\ Viktor Filer \ Matkort1.1 \ src \ routes \ admin.js:13:194) (节点:12896)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。该错误是由于在没有catch块的情况下抛出异步函数而引起的,或者是由于拒绝了未经.catch()处理的诺言而引起的。 (拒绝ID:1) (节点:12896)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。

我的代码如下:

router.post("/addRestaurant", async(req, res) => {
    if (req.body.password && req.body.username && req.body.name) {
        if (await models.RestaurantAccount.findOne({
                username: req.body.username
            }) || await models.Restaurant.findOne({
                name: req.body.name
            })) {
            return res.send("Information sent is already in use");
        } else {
            let restaurant = models.Restaurant({
                name: req.body.name,
            })
            restaurant.save();

            let password = await argon2.hash(req.body.password);

            let restaurantAcc = models.RestaurantAccount({
                username: req.body.username,
                password: password,
                restaurant: restaurant._id,
            })

            restaurantAcc.save();

            return res.send("Restaurant added succesfully");
        }
    } else {
        return res.send("Insuficient information")
    }
})

这不是应用程序的全部代码,但是我很确定该错误存在于 这段代码。我尝试对此问题进行一些研究,但没有发现任何可以完全帮助我理解如何解决此错误的东西。

如果在我使用has函数之前删除await关键字(argon2),则不会显示此错误,但其他 因为我试图在完成散列之前保存密码而出现错误

关于如何解决此问题的任何建议?

0 个答案:

没有答案