diff options
Diffstat (limited to 'packages/integrations/node/src')
-rw-r--r-- | packages/integrations/node/src/server.ts | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/packages/integrations/node/src/server.ts b/packages/integrations/node/src/server.ts index c07b5a91b..453ecb2d2 100644 --- a/packages/integrations/node/src/server.ts +++ b/packages/integrations/node/src/server.ts @@ -12,21 +12,28 @@ export function createExports(manifest: SSRManifest) { const app = new NodeApp(manifest); return { async handler(req: IncomingMessage, res: ServerResponse, next?: (err?: unknown) => void) { - const route = app.match(req); + try { + const route = app.match(req); - if (route) { - try { - const response = await app.render(req); - await writeWebResponse(res, response); - } catch (err: unknown) { - if (next) { - next(err); - } else { - throw err; + if (route) { + try { + const response = await app.render(req); + await writeWebResponse(res, response); + } catch (err: unknown) { + if (next) { + next(err); + } else { + throw err; + } } + } else if (next) { + return next(); + } + } catch(err: unknown) { + if(!res.headersSent) { + res.writeHead(500, `Server error`); + res.end(); } - } else if (next) { - return next(); } }, }; |