diff options
author | 2023-05-01 10:08:18 -0400 | |
---|---|---|
committer | 2023-05-01 10:08:18 -0400 | |
commit | c405cef64711a7b6a480e8b4068cd2bf3cf889a9 (patch) | |
tree | d889655a1ccd376e95c8efff81f65b69a8d798fd /packages/integrations/node/src | |
parent | 649d70934e709bb1aa6e5e7583b12fa1703377cb (diff) | |
download | astro-c405cef64711a7b6a480e8b4068cd2bf3cf889a9.tar.gz astro-c405cef64711a7b6a480e8b4068cd2bf3cf889a9.tar.zst astro-c405cef64711a7b6a480e8b4068cd2bf3cf889a9.zip |
Catch errors that occur within the stream in the Node adapter (#6935)
* Catch errors that occur within the stream in the Node adapter
* Adding a changeset
* Better error message on completely uncaught errors within the stream
* Update test
Diffstat (limited to 'packages/integrations/node/src')
-rw-r--r-- | packages/integrations/node/src/middleware.ts | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/packages/integrations/node/src/middleware.ts b/packages/integrations/node/src/middleware.ts index 1af4539a6..7c45db1ae 100644 --- a/packages/integrations/node/src/middleware.ts +++ b/packages/integrations/node/src/middleware.ts @@ -51,8 +51,13 @@ async function writeWebResponse(app: NodeApp, res: ServerResponse, webResponse: res.writeHead(status, Object.fromEntries(headers.entries())); if (webResponse.body) { - for await (const chunk of responseIterator(webResponse) as unknown as Readable) { - res.write(chunk); + try { + for await (const chunk of responseIterator(webResponse) as unknown as Readable) { + res.write(chunk); + } + } catch(err: any) { + console.error(err?.stack || err?.message || String(err)) + res.write('Internal server error'); } } res.end(); |