diff --git a/runtime/src/server/middleware/get_page_handler.ts b/runtime/src/server/middleware/get_page_handler.ts index d4a62cb..40e6ef8 100644 --- a/runtime/src/server/middleware/get_page_handler.ts +++ b/runtime/src/server/middleware/get_page_handler.ts @@ -26,6 +26,15 @@ export function get_page_handler( const { server_routes, pages } = manifest; const error_route = manifest.error; + function bail(req: Req, res: Res, err: Error) { + console.error(err); + + const message = dev ? escape_html(err.message) : 'Internal server error'; + + res.statusCode = 500; + res.end(`
${message}`);
+ }
+
function handle_error(req: Req, res: Res, statusCode: number, error: Error | string) {
handle_page({
pattern: null,
@@ -169,6 +178,10 @@ export function get_page_handler(
preloaded = await Promise.all(toPreload);
} catch (err) {
+ if (error) {
+ return bail(req, res, err)
+ }
+
preload_error = { statusCode: 500, message: err };
preloaded = []; // appease TypeScript
}
@@ -314,11 +327,8 @@ export function get_page_handler(
res.statusCode = status;
res.end(body);
} catch(err) {
- console.log(err);
if (error) {
- // we encountered an error while rendering the error page — oops
- res.statusCode = 500;
- res.end(`${escape_html(err.message)}`);
+ bail(req, res, err)
} else {
handle_error(req, res, 500, err);
}