adonis5-swagger
adonis5-swagger copied to clipboard
Stream error on loading swagger doc page
Package version
1.4.1
Node.js and npm version
Node: v16.16.0 & npm: 8.16.0
Sample Code (to reproduce the issue)
I'd version v1.4.0 installed earlier and it was working fine until today when I upgraded it to the latest i.e. v1.4.1. On loading the swagger doc page I'm getting this error.
Endpoint: http://localhost:3333/docs/index.html
{"fd":null,"path":"/Users/istiyaktailor/Documents/Projects/credilio-api/node_modules/swagger-ui-dist/index.html","flags":"r","mode":438,"end":null,"bytesRead":0,"closed":false,"_readableState":{"objectMode":false,"highWaterMark":65536,"buffer":{"head":null,"tail":null,"length":0},"length":0,"pipes":[],"flowing":null,"ended":false,"endEmitted":false,"reading":false,"constructed":false,"sync":true,"needReadable":false,"emittedReadable":false,"readableListening":false,"resumeScheduled":false,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"destroyed":false,"errored":null,"closed":false,"closeEmitted":false,"defaultEncoding":"utf8","awaitDrainWriters":null,"multiAwaitDrain":false,"readingMore":false,"dataEmitted":false,"decoder":null,"encoding":null,"object_mode":false,"high_water_mark":65536,"end_emitted":false,"need_readable":false,"emitted_readable":false,"readable_listening":false,"resume_scheduled":false,"error_emitted":false,"emit_close":true,"auto_destroy":true,"close_emitted":false,"default_encoding":"utf8","await_drain_writers":null,"multi_await_drain":false,"reading_more":false,"data_emitted":false},"_events":{},"_eventsCount":1,"bytes_read":0,"readable_state":{"objectMode":false,"highWaterMark":65536,"buffer":{"head":null,"tail":null,"length":0},"length":0,"pipes":[],"flowing":null,"ended":false,"endEmitted":false,"reading":false,"constructed":false,"sync":true,"needReadable":false,"emittedReadable":false,"readableListening":false,"resumeScheduled":false,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"destroyed":false,"errored":null,"closed":false,"closeEmitted":false,"defaultEncoding":"utf8","awaitDrainWriters":null,"multiAwaitDrain":false,"readingMore":false,"dataEmitted":false,"decoder":null,"encoding":null,"object_mode":false,"high_water_mark":65536,"end_emitted":false,"need_readable":false,"emitted_readable":false,"readable_listening":false,"resume_scheduled":false,"error_emitted":false,"emit_close":true,"auto_destroy":true,"close_emitted":false,"default_encoding":"utf8","await_drain_writers":null,"multi_await_drain":false,"reading_more":false,"data_emitted":false},"events":{},"events_count":1}
I debugged the code and noticed that in v1.4.1
we are sending the html file i.e. index.html
as stream.
https://github.com/reg2005/adonis5-swagger/blob/b72485a09d9759dc9bf229860d8d4c13c92f31b6/src/SwaggerController.ts#L45
While, in v1.4.0
we read the html file and then send it in response.
https://github.com/reg2005/adonis5-swagger/blob/5b88d083ebc998101c8ed56083241e5050e857fc/src/SwaggerController.ts#L32-L40
I could confirm that reading the file first using fs.readFileSync
and then sending it in response via response.send(file)
fixes the issue.