问题描述
_http_outgoing.js:504 throw new Error(’Can’t set headers after they are sent.’); ^Error: Can’t set headers after they are sent. at validateHeader (_http_outgoing.js:504:11) at ServerResponse.setHeader (_http_outgoing.js:511:3) at Array.write (D:GitSpacefbmsnode_modules_finalhandler@1.0.3@finalhandlerindex.js:254:9) at listener (D:GitSpacefbmsnode_modules_on-finished@2.3.0@on-finishedindex.js:169:15) at onFinish (D:GitSpacefbmsnode_modules_on-finished@2.3.0@on-finishedindex.js:100:5) at callback (D:GitSpacefbmsnode_modules_ee-first@1.1.1@ee-firstindex.js:55:10) at IncomingMessage.onevent (D:GitSpacefbmsnode_modules_ee-first@1.1.1@ee-firstindex.js:93:5) at emitNone (events.js:105:13) at IncomingMessage.emit (events.js:207:7) at endReadableNT (_stream_readable.js:1045:12) at _combinedTickCallback (internal/process/next_tick.js:102:11) at process._tickCallback (internal/process/next_tick.js:161:9)Program node app.js exited with code 1
如果不启动调试模式就不会有这个报错,页面加载和req,res都正常
问题解答
回答1:代码写的有问题,跟调试模式无关,response响应已经被发送了,但是你却仍然想修改已经被发送的响应头。一旦调用 response.end() 方法,代表此响应已经结束并发送,在此之后不得调用诸如 response.writeHead() 等修改 response 的方法。