当前位置: 首页 > 知识库问答 >
问题:

当我试图以快递方式发送两个或更多json文件时。它显示错误“发送到客户端后无法设置标头”

乔伯寅
2023-03-14

错误[ERR_HTTP_HEADERS_SENT]:在将标头发送到ServerResponse处的客户端后,无法设置标头。ServerResponse上的setHeader(_http_outgoing.js:485:11)。ServerResponse上的标头(E:\download\react native\chat app\backend\node_modules\express\lib\response.js:771:10)。在ServerResponse发送(E:\download\react native\chat app\backend\node_modules\express\lib\response.js:170:12)。json(E:\download\react native\chat app\backend\node_modules\express\lib\response.js:267:15),网址:E:\download\respondnative\hat app\backend\routes\routes。js:183:40在processTicksAndRejections(internal/process/task_queues.js:93:5){code:'ERR_HTTP_HEADERS_SENT'}

代码:

app.post("/images", (req, res) => {
    const uname = req.body.userName;
    FreindRequest.find({ $and: [{ acceptance: "accept" }, { $or: [{ reciever: uname }, { sender: uname }] }] }).then(
        users => {
            if (users) {
                users.map(user => {
                    ImageModel.find({ $or: [{ userName: user.sender }, { userName: user.reciever }] }).then(user => {
                        if (user) {
                            res.json(user);
                        }
                        else {
                            res.json({ error: "error" })
                        }
                    }).catch(err => console.log(err));
                })
            }
            else {
                res.json({ error: "error" });
            }
        }
    ).catch(err => res.json({ error: "error" }));
});

共有1个答案

薛鹏飞
2023-03-14

对于一个请求,您只能发送一个响应。所以不应该在map函数内部使用res.json()。

如果您想发送多个JSON,您可以在函数中创建一个数组,然后推送所有数据,并在如下map函数之后发送res.JSON()。

app.post("/images",async (req,res)=>{ 
  const uname=req.body.userName; 
  FreindRequest.find({$and:[{acceptance:"accept"},{$or:[{reciever:uname},{sender:uname}]}]})
  .then( users=>{ 
    if(users){ 
      let userImages = []
      await users.map(user=>{ 
        ImageModel.find({$or:[{userName:user.sender},{userName:user.reciever}]})
        .then(user=>{ 
          if(user){ 
            userImages.push(user)
          } else { 
            res.json({error:"error"}) 
          }
        })
        .catch(err=>res.json({error:"error"})); 
      })
      res.json(userImages)  
    } else { 
      res.json({error:"error"}); 
    }
  })
  .catch(err=>res.json({error:"error"})); 
});
 类似资料:
  • 我正试图创造一个垃圾。我已经创建了更新,但是当我尝试从postman请求时,我得到以下错误: 错误 [ERR_HTTP_HEADERS_SENT]: 在服务器响应.set 上将标头发送到客户端后无法设置标头 (_http_outgoing.js:526:11) 在服务器响应..node_modules (E:\freebooks-core-api\node_modules node_modules

  • 问题内容: 我对Node.js相当陌生,遇到了一些问题。 我正在使用Node.js 4.10和Express 2.4.3。 当我尝试访问http://127.0.0.1:8888/auth/facebook时,我将重定向到http://127.0.0.1:8888/auth/facebook_callback。 然后,我收到以下错误: 以下是我的代码: 我可以知道我的代码有什么问题吗? 问题答案:

  • 我正在关注一个关于udemy上的节点.js的课程,这有点过时了,遇到了这些错误,我无法找到解决方案。 我尝试了什么: 使用next(); 在所有if语句中添加返回res 有人能帮我修一下这些吗?我将不胜感激! 提前感谢! 用户名存在错误:错误 [ERR_HTTP_HEADERS_SENT]:在服务器响应.set 上将标头发送到客户端后无法设置标头 (_http_outgoing.js:526:11

  • 问题内容: 我对Node.js相当陌生,遇到了一些问题。 我正在使用Node.js 4.10和Express 2.4.3。 当我尝试访问http://127.0.0.1:8888/auth/facebook时,我将重定向至http://127.0.0.1:8888/auth/facebook_callback。 然后,我收到以下错误: 以下是我的代码: 我可以知道我的代码有什么问题吗? 问题答案:

  • 所以我看到了一篇很棒的帖子“错误:发送到客户端后无法设置标题,但仍然不明白我的“标题”部分有什么问题,因为当我将它从注释掉的

  • 问题内容: 将标头发送到客户端后,无法设置标头。这是请求验证后的后端错误,看起来像标头问题。我为我的项目脏代码感到抱歉,我还需要做其他事情,因此在注释中有一些代码。这是我的代码 您可以在我的代码中发现其他错误,因为我尝试了许多不同的方法。这是passport.js配置文件 这是身份验证的ajax请求 非常感谢你。 问题答案: 这是由于您的代码试图从authenticate函数发送多个响应。 删除其