This ReadableStream did not return bytes.

I'm doing something like this with nuxt/nitro:
export default defineEventHandler(async (event) => {

setResponseHeader(event, "Content-Type", "text/event-stream");
setResponseHeader(event, "Cache-Control", "no-cache");
setResponseHeader(event, "Transfer-Encoding", "chunked");

const stream = new ReadableStream({
async start(controller) {
controller.enqueue(JSON.stringify({ type: 'message', role:"user", content:"HELLO" }) + '\n')
controller.close()
}
})

return stream
})
export default defineEventHandler(async (event) => {

setResponseHeader(event, "Content-Type", "text/event-stream");
setResponseHeader(event, "Cache-Control", "no-cache");
setResponseHeader(event, "Transfer-Encoding", "chunked");

const stream = new ReadableStream({
async start(controller) {
controller.enqueue(JSON.stringify({ type: 'message', role:"user", content:"HELLO" }) + '\n')
controller.close()
}
})

return stream
})
My POST requests return nothing and the logs show: This ReadableStream did not return bytes. - Works fine in localhost. Does anyone knows what could cause the issue?
1 Reply
cosbgn
cosbgnOP4mo ago
If someone finds this, the trick is to use textEncoder.encode if you don't it works locally but not on workers:
controller.enqueue(textEncoder.encode(JSON.stringify(json) + delimiter))
controller.enqueue(textEncoder.encode(JSON.stringify(json) + delimiter))

Did you find this page helpful?