Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error: Cannot set headers after they are sent to client, occurs when trying to serve index.html, only occurs in v14.0.0 #756

Open
abhimonk opened this issue Oct 23, 2021 · 19 comments
Labels
help-wanted high priority Very important bug or security fix

Comments

@abhimonk
Copy link

abhimonk commented Oct 23, 2021

Getting the following error when trying to go to the webpage returned by "npx http-server" serving my index.html:

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

The issue does not occur if I use version 13.0.0

(See below for full stack trace)

If I repeat the reproduction steps with version 13.0.0, it works as expected.

Environment Versions

  1. OS Type: Windows
  2. Node version: 6.13.4
  3. http-server version: 14.0.0

Steps to reproduce

  1. Have just any index.html in your current folder
  2. Run "npx http-server" from the current folder
  3. Navigate to the URL returned (which should trigger serving your index.html)

Expected result

My index.html should be served and the contents of it should be displayed. This works fine in version 13.0.0.

Actual result

The server crashes with the following error:

[2021-10-23T17:10:29.869Z] "GET /" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"
(node:3956) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated
_http_outgoing.js:485
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:485:11)
at module.exports.ResponseStream. [as setHeader] (C:\Users\abhim\Documents\GameDev\JSDev\AttackAnimationGenerator\node_modules\union\lib\response-stream.js:100:34)
at Object.exports. (C:\Users\abhim\Documents\GameDev\JSDev\AttackAnimationGenerator\node_modules\http-server\lib\core\status-handlers.js:57:7)
at Readable. (C:\Users\abhim\Documents\GameDev\JSDev\AttackAnimationGenerator\node_modules\http-server\lib\core\index.js:339:22)
at Readable.emit (events.js:210:5)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
code: 'ERR_HTTP_HEADERS_SENT'
}

Other information

I have seen the github issue #634, but it looks like their server is undergoing external traffic. I am just using my server for local testing with a simple index.html. This workflow worked fine in version 13.0.0, but when I switched to version 14.0.0 I get the above error.

@abhimonk abhimonk changed the title Error: Cannot set headers after they are sent to client, occurs when trying to serve index.html, only occurs in v13.0.0 Error: Cannot set headers after they are sent to client, occurs when trying to serve index.html, only occurs in v14.0.0 Oct 23, 2021
@natali27
Copy link

same problem with docker node:12.10.0-alpine ,
now needed to set version http-server@13.0.2 to fix this error

@Ronkiro
Copy link

Ronkiro commented Oct 29, 2021

+1, using node v12.14.0

@totszwai
Copy link

totszwai commented Nov 2, 2021

Came here for this, v14 is broken. Need to use 13.0.2...

@boarwell
Copy link
Contributor

boarwell commented Nov 4, 2021

Reproduced this with Node.js v12.14.0, but not with v12.22.7 (the latest release of v12.x). As a workaround, could you update to the v12.22.7 (or higher)?

@tutanck
Copy link

tutanck commented Nov 4, 2021

Same problem here with docker node:12.11.1-alpine

@wesleycsj
Copy link

wesleycsj commented Nov 10, 2021

Problem is not with docker(or container versions), i faced same problem on ubuntu. http-server@14 is broken, need install 13.0.2 to get things working.

@thornjad
Copy link
Member

thornjad commented Dec 6, 2021

Reproduced this with Node.js v12.14.0, but not with v12.22.7 (the latest release of v12.x). As a workaround, could you update to the v12.22.7 (or higher)?

This makes this sound like it may be a bug in Node, can anyone else confirm newer versions of Node work with http-server v14?

@matthias-ccri
Copy link

Seeing this on v12.13.1

@srlowe
Copy link

srlowe commented Dec 13, 2021

I'm seeing with v12.13.0

@myleshk
Copy link

myleshk commented Dec 20, 2021

Same here with v10.24.1

@thornjad
Copy link
Member

I'm not currently able to reproduce this, tagging for help!

@thornjad thornjad added help-wanted high priority Very important bug or security fix labels Dec 20, 2021
@joshnoe
Copy link

joshnoe commented Dec 31, 2021

Can reproduce on node v12.14.1

@systa
Copy link

systa commented Jan 8, 2022

My node is v10.19.0 and I'm getting the same error. I will uninstall and search for other options.
Simple static http-server must be so simple, that things errors this never happens - regardless of node version.
Suggestion: simplify the code radically.

@ThomasDEVio
Copy link

Can reproduce on node v10.19.0, I updated to latest stable node, 16.13.2 and it works fine now!
https://phoenixnap.com/kb/update-node-js-version

@zbynek
Copy link
Contributor

zbynek commented Jan 23, 2022

This is hiding another error

TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string or Buffer. Received type number
    at write_ (_http_outgoing.js:618:11)
    at ServerResponse.write (_http_outgoing.js:586:15)
    at module.exports.ResponseStream.write (/root/http-server/node_modules/union/lib/response-stream.js:186:22)
    at Readable.ondata (_stream_readable.js:722:22)
    at Readable.emit (events.js:209:13)
    at addChunk (_stream_readable.js:305:12)
    at readableAddChunk (_stream_readable.js:286:11)
    at Readable.push (_stream_readable.js:220:10)
    at next (_stream_readable.js:1218:27)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

and is happening since #736
@boarwell 's comment about failures on Node 10 probably applies to earlier versions of Node 12 too.

The issue can be reproduced with node (using alpine docker images) up to 12.15, it's OK in 12.16.

@barryvdh
Copy link

I ran into this issue with and old AngularJS project on MacOS. I just installed http-server and it didn't work. Forcing to v13 made it work without changes.

[Tue Mar 29 2022 09:43:48 GMT+0200 (Central European Summer Time)]  "GET /" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"
_http_outgoing.js:470
    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:470:11)
    at module.exports.ResponseStream.(anonymous function) [as setHeader] (/Users/barry/Sites/app/node_modules/union/lib/response-stream.js:100:34)
    at Object.exports.(anonymous function) (/Users/barry/Sites/app/node_modules/http-server/lib/core/status-handlers.js:57:7)
    at Readable.stream.on (/Users/barry/Sites/app/node_modules/http-server/lib/core/index.js:339:22)
    at Readable.emit (events.js:198:13)
    at emitErrorNT (internal/streams/destroy.js:91:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
    at process._tickCallback (internal/process/next_tick.js:63:19)

@github-actions
Copy link

This issue has been inactive for 180 days

@github-actions github-actions bot added the stale label Sep 25, 2022
@Ronkiro
Copy link

Ronkiro commented Sep 30, 2022

bump, i think this still needs a solution

@github-actions github-actions bot removed the stale label Oct 1, 2022
@KissBalazs
Copy link

KissBalazs commented Apr 4, 2023

Switching from node:10 to node:16 solved this issue for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help-wanted high priority Very important bug or security fix
Projects
None yet
Development

No branches or pull requests