首页 > 解决方案 > 为什么在将标头发送到客户端后出现节点错误无法设置标头?

问题描述

我有这个简单的服务器来玩 express 和 node。当我在app.get()方法内调用函数时出现此错误。我在互联网上搜索过,但我仍然无法弄清楚这里发生了什么。

错误

 http_outgoing.js:518
        throw new ERR_HTTP_HEADERS_SENT('set');
        ^
    
    Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after 
    they are sent to the client
        at ServerResponse.setHeader (_http_outgoing.js:518:11)
        at Array.write (G:\Project\Node Projects\Automater\node_modules\finalhandler\index.js:285:9)
        at listener (G:\Project\Node Projects\Automater\node_modules\on-finished\index.js:169:15)
        at onFinish (G:\Project\Node Projects\Automater\node_modules\on-finished\index.js:100:5)
        at callback (G:\Project\Node Projects\Automater\node_modules\ee-first\index.js:55:10)
        at IncomingMessage.onevent (G:\Project\Node Projects\Automater\node_modules\ee-first\index.js:93:5)
        at IncomingMessage.emit (events.js:327:22)
        at endReadableNT (_stream_readable.js:1221:12)      
        at processTicksAndRejections (internal/process/task_queues.js:84:21) {
      code: 'ERR_HTTP_HEADERS_SENT'
    }

这是我的代码

const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

app.get('/user',(req,res,next) =>{
    log(req,res,next);
    res.send('user');
    
})

app.get('/',(req,res,next) => {
    res.send('Success');
});

function log(req,res,next){
    console.log('Logger !!!');
    next();
}
app.listen(port, () => console.log(`listening on port ${port}!`));

标签: node.jsexpresserror-handling

解决方案


这意味着响应已经发送到客户端。

你正在做两件事: res.send('user'); 重发();

删除 res.end() ,它应该是好的。


推荐阅读