mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-17 21:24:59 +00:00
Abort infinite loop for preload errors
This commit is contained in:
@@ -26,6 +26,15 @@ export function get_page_handler(
|
|||||||
const { server_routes, pages } = manifest;
|
const { server_routes, pages } = manifest;
|
||||||
const error_route = manifest.error;
|
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(`<pre>${message}</pre>`);
|
||||||
|
}
|
||||||
|
|
||||||
function handle_error(req: Req, res: Res, statusCode: number, error: Error | string) {
|
function handle_error(req: Req, res: Res, statusCode: number, error: Error | string) {
|
||||||
handle_page({
|
handle_page({
|
||||||
pattern: null,
|
pattern: null,
|
||||||
@@ -169,6 +178,10 @@ export function get_page_handler(
|
|||||||
|
|
||||||
preloaded = await Promise.all(toPreload);
|
preloaded = await Promise.all(toPreload);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
if (error) {
|
||||||
|
return bail(req, res, err)
|
||||||
|
}
|
||||||
|
|
||||||
preload_error = { statusCode: 500, message: err };
|
preload_error = { statusCode: 500, message: err };
|
||||||
preloaded = []; // appease TypeScript
|
preloaded = []; // appease TypeScript
|
||||||
}
|
}
|
||||||
@@ -314,11 +327,8 @@ export function get_page_handler(
|
|||||||
res.statusCode = status;
|
res.statusCode = status;
|
||||||
res.end(body);
|
res.end(body);
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
console.log(err);
|
|
||||||
if (error) {
|
if (error) {
|
||||||
// we encountered an error while rendering the error page — oops
|
bail(req, res, err)
|
||||||
res.statusCode = 500;
|
|
||||||
res.end(`<pre>${escape_html(err.message)}</pre>`);
|
|
||||||
} else {
|
} else {
|
||||||
handle_error(req, res, 500, err);
|
handle_error(req, res, 500, err);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user