Express 服务器上的 ERR

编程入门 行业动态 更新时间:2024-10-07 18:29:42

Express 服务<a href=https://www.elefans.com/category/jswz/34/1771452.html style=器上的 ERR"/>

Express 服务器上的 ERR

我是 Node.js 和 Express 的新手,所以我缺乏异步编程的知识。我目前正在尝试为我的 Express 服务器上的应用程序创建一个简单的注册表端点,但我一直遇到此错误:ERR_HTTP_HEADERS_SENT:将标头发送到客户端后无法设置标头。我检查了代码中的所有地方,并确保只执行一次 res.send() 函数。

这是我所拥有的一个简短片段:

app.post('/register', (req, res, done) => {
    register(req, res).then((response) => {
        res.send({
            success: response.success,
            message: response.message
        });
        
    }).catch((error) => {
        console.log(error);
    });
    done();
});


function register(req, res) {
    return new Promise((resolve, reject) => {
        if (req.body.password != req.body.confirmPassword) {
            resolve({
                success: false,
                message: "Passwords need to match."
            });
        }
        else {
            userExists(req, res).then((response) => {
                resolve(response);
            }).catch((error) => {
                reject({
                    success: false,
                    message: error.message
                });
            });
        }
    });
}


function userExists(req, res) {
    return new Promise((resolve, reject) => {
        findUser(req.body.username).then((response) => {
            if (response.length > 0) {
                resolve(true);
            }
            else {
                resolve(false);
            }
        }).catch((error) => {
            reject(new Error(error.message));
        });
    });
}

function findUser(username) {
    return new Promise((resolve, reject) => {
        connection.query("SELECT * FROM users WHERE USERNAME=?", username, function(error, results, fields) {
            if (error) {
                reject(new Error(error.message));
            }
            else {
                resolve(results);
            }
        });
    });
}

我读到错误通常发生是因为 res.send() 函数被执行了不止一次。我本来有多个 res.send() 命令,但它们被 if/else 控制结构分隔开,超过一个就不会被执行。尽管如此,我还是尝试通过创建一个 register() 函数来合并所有这些语句,该函数将返回一个包含我需要发送的所有数据的已解决的 Promise,但这也没有用。

提前谢谢你!

回答如下:

更多推荐

Express 服务器上的 ERR

本文发布于:2024-05-30 08:43:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770311.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:器上   Express   ERR

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!