首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用node-imap时发送响应出错?

使用node-imap时发送响应出错?
EN

Stack Overflow用户
提问于 2020-06-20 13:25:37
回答 2查看 66关注 0票数 1

我正在使用imap对服务器进行用户身份验证。我使用express作为服务器,使用https://github.com/mscdex/node-imap作为imap。控制器功能

代码语言:javascript
复制
exports.authenticateUser = async (req, res) => {

        let username = req.body.username;
        let password = req.body.password;
        let imap = new Imap({
            user: username,
            password: password,
            host: HOST_ADDRESS,
            port: HOST_PORT
        })

        imap.once('ready', (e) => {
            req.session.user = username;
            return res.status(201).json({
                success: true,
                user: username
            });
        })

        imap.once('error', function (err) {
            console.log("err", err);    
            return res.status(500).json({
                success: false,
                error: 'Wrong credentials'
            });
        });

        imap.connect();
}

但我的服务器经常停机

代码语言:javascript
复制
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

行中出现某些错误的原因

代码语言:javascript
复制
                return res.status(500).json({
                success: false,
                error: 'Wrong credentials'
            });
EN

回答 2

Stack Overflow用户

发布于 2020-09-10 13:15:17

要解决问题,

代码语言:javascript
复制
    imap.once('ready', (e) => {
        req.session.user = username;
        imap.end()
        return res.status(201).json({
            success: true,
            user: username
        });
    })

我使用IMAP进行身份验证,因此不需要保持连接处于活动状态,因此我在验证凭据后立即结束连接。它解决了问题。

我猜可能会发生什么,在发送响应201之后,在连接终止后的一段时间内,on error被触发,导致再次发送响应,从而出现错误。只是猜测而已。

票数 1
EN

Stack Overflow用户

发布于 2020-09-10 13:21:19

改一下这个怎么样?

代码语言:javascript
复制
return res.status(500).json({
                success: false,
                error: 'Wrong credentials'
            });

到这个

代码语言:javascript
复制
 res.status(500).send({success: false,
                    error: 'Wrong credentials'
                });

  res.status(201).send({
        success: true,
        user: username
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62482010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档