Closed
Description
When using renderToReadableStream
for e.g. Cloudflare Workers runtimes, I'm noticing this error on the server:
TypeError: The stream is not in a state that permits close
at ReadableStreamDefaultController.close (/Users/joshlarson/src/github.com/jplhomer/vite-streaming-ssr-demo/node_modules/web-streams-polyfill/src/lib/readable-stream/default-controller.ts:72:13)
at Mc (/Users/joshlarson/src/github.com/jplhomer/vite-streaming-ssr-demo/dist/worker/worker.js:3636:145)
at Bc (/Users/joshlarson/src/github.com/jplhomer/vite-streaming-ssr-demo/dist/worker/worker.js:3457:33)
at ping (/Users/joshlarson/src/github.com/jplhomer/vite-streaming-ssr-demo/dist/worker/worker.js:3128:24)
GET / 200 OK (2091.13ms)
I'm assuming this results in the following malformed chunk being sent to the stream:
<div hidden id="<div hidden id="S:1">
Which results in the client failing:
Uncaught TypeError: Cannot read properties of null (reading 'parentNode')
at $RS (127.0.0.1/:11)
at 127.0.0.1/:11
I put together a reproduction here, powered by Miniflare for the Workers runtime: https://github.com/jplhomer/vite-streaming-ssr-demo
Possible issues
- Could this be related to the "fundamentally flawed" nature of Web Streams implementations in e.g. Cloudflare Workers runtime? Why is React not creating a ReadableStream in pipeToNodeWritable? reactwg/react-18#66 (comment)
- Is something going on with corking/uncorking, as per Requirements for Building a new Streaming JavaScript Environment (Node.js alternatives) reactwg/react-18#91
- Maybe something's wrong with Miniflare's polyfill and this is a non-issue, coming from
web-streams-polyfill
? - Finally, it's possible something is wrong with the Vite version of the example I've put together. I could try rebuilding with webpack if it's determined none of these items apply.