尝试在网页上显示响应

时间:2019-06-20 10:36:55

标签: javascript node.js

我正在尝试在网页上显示输出,但是我可以得到以下内容

  

错误:错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头

假设我在此处编写console.log(name),可以在命令提示符下进行响应,但是如果我在编写res.send(name),则可以得到上述错误

请告诉我在哪里可以设置标题并提出建议,最好的在线nodejs编辑器

谢谢。...

app.get('/', (req, res) =>{
    const name = [{
        Name : 'Pavan',
        age : 26
    },{
        Name : 'kumar',
        age : 27
    }]

    for (let index = 0; index < name.length; index++) {
        const element = name[index];
        // res.send(name[index].Name);        
        console.log(name[index].Name);        
    }

});

3 个答案:

答案 0 :(得分:0)

您需要将它们组合在一起并立即发送它们:

const names = name.map(({ Name }) => Name).join("<br>");
res.send(names);

答案 1 :(得分:0)

编写res.send()时,响应将发送到客户端。在for循环中编写该语句时,您试图将多个响应发送给同一请求,而这是不可能的。因此,与其将res.send发送到for循环中,不如创建一个数组并将数据推送到该数组,然后使用该数组将res.send发送到循环之外。

答案 2 :(得分:0)

res.send()只能使用一次,之后您将获得

  

[ERR_HTTP_HEADERS_SENT]:将标头发送到   客户

意味着您只能一次发送对请求的响应

如果要发送姓名以进行回复,则应这样做:

app.get('/', (req, res) =>{
    const name = [{
        Name : 'Pavan',
        age : 26
    },{
        Name : 'kumar',
        age : 27
    }]

    /*for (let index = 0; index < name.length; index++) {
        const element = name[index];       
        console.log(name[index].Name);        
    }*/

    let onlyNames=name.map((item)=>{return item.Name+"<br/>"});
    res.send(onlyNames); 
});