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



当响应在setInterval中时,Node express崩溃。当响应延迟一点时,我想在前端测试一些东西。为此,我将响应作为回调传递给nodeJs Express:中的setInterval函数

router.post('/survey', userMiddleware.isLoggedIn, (req, res ,next) => {
setInterval(() => {
res.status(200).send({
message: 'Upload success!'
});
}, 3000);
});

然而,我随后收到一个错误:

node:_http_outgoing:576
throw new ERR_HTTP_HEADERS_SENT('set');
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:371:5)
at ServerResponse.setHeader (node:_http_outgoing:576:11)
at ServerResponse.header (/node/node-express-jwt-test/node_modules/express/lib/response.js:794:10)
at ServerResponse.send (/node/node-express-jwt-test/node_modules/express/lib/response.js:174:12)
at ServerResponse.json (/node/node-express-jwt-test/node_modules/express/lib/response.js:278:15)
at ServerResponse.send (/node/node-express-jwt-test/node_modules/express/lib/response.js:162:21)
at Timeout._onTimeout (/node/node-express-jwt-test/routes/router.js:83:22)
at listOnTimeout (node:internal/timers:559:17)
at processTimers (node:internal/timers:502:7) {
code: 'ERR_HTTP_HEADERS_SENT'
}
Node.js v17.5.0
[nodemon] app crashed - waiting for file changes before starting...

怎么回事?

您一直以3000ms的间隔发送响应,延迟已经完成,但重复

使用"setTimeout(函数,3000("发送一次

在此处阅读有关设置超时的更多信息https://www.w3schools.com/jsref/met_win_setTimeout.asp

所以你的代码应该是这样的:

router.post('/survey', userMiddleware.isLoggedIn, (req, res ,next) => {
setTimeout(() => {
res.status(200).send({
message: 'Upload success!'
});
}, 3000 );
});

最新更新