Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为什么我';“我得到了”;发送到客户机后无法设置标题";错误事件,尽管我使用了1次响应后返回_Node.js_Express - Fatal编程技术网

Node.js 为什么我';“我得到了”;发送到客户机后无法设置标题";错误事件,尽管我使用了1次响应后返回

Node.js 为什么我';“我得到了”;发送到客户机后无法设置标题";错误事件,尽管我使用了1次响应后返回,node.js,express,Node.js,Express,我想问一下,如果您返回的响应超过1个,为什么我会不断收到错误: events.js:298 throw er; // Unhandled 'error' event ^ Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client at ServerResponse.setHeader (_http_outgoing.js:535:11) at Se

我想问一下,如果您返回的响应超过1个,为什么我会不断收到错误:

events.js:298
      throw er; // Unhandled 'error' event
      ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:535:11)
    at ServerResponse.header (C:\Web Develope\node_modules\express\lib\response.js:771:10)
    at ServerResponse.send (C:\Web Develope\node_modules\express\lib\response.js:170:12)
    at C:\Web\wiki-API\app.js:69:21
    at C:\Web\node_modules\mongoose\lib\model.js:4798:16
    at C:\Web\node_modules\mongoose\lib\query.js:4389:12
    at C:\Web\node_modules\mongoose\lib\helpers\query\completeMany.js:35:39
    at processTicksAndRejections (internal/process/task_queues.js:79:11)
Emitted 'error' event on Function instance at:
    at C:\Web\node_modules\mongoose\lib\model.js:4800:13
    at C:\Web\node_modules\mongoose\lib\query.js:4389:12
    at C:\Web\node_modules\mongoose\lib\helpers\query\completeMany.js:35:39
    at processTicksAndRejections (internal/process/task_queues.js:79:11) {
  code: 'ERR_HTTP_HEADERS_SENT'
}
这是我的密码:

app.route('/data/:dataName')
    .get((req,res)=>{
        Article.find({},(err,list_data)=>{
            if(!err){
                if(list_data){
                    list_data.forEach((item)=>{
                        if(_.lowerCase(req.params.dataName) === _.lowerCase(item.title)){
                            return res.send(item);
                        }
                    });
                }
                res.send("No data found!");
            }
        })
    })
我仍然不明白为什么在执行第一个响应之后,它仍然会转到下一个响应并弹出错误


谢谢大家!

在Node Js中,一个请求只能发送一个响应。 如果找到或未找到用户,则无法发送两个响应

if(_.lowerCase(req.params.dataName) === _.lowerCase(item.title)){
                            return res.send(item);
                        }
else 
res.send("No data found!");

您收到的错误是由于多次发送响应造成的。您应该使用错误优先的方法来处理回调,如下所示

app.route('/data/:dataName')
.get((req,res)=>{
    Article.find({}, async (err,list_data)=>{
        if(err){
            return res.send("No data found!");
        }
        if(list_data){
           let filter_data = await list_data.filter((item)=>{
               return req.params.dataName === _.lowerCase(item.title)
           });
         return res.send(filter_data)
        }
    })
})

你可以检查甜食!我会调查的。