Merge pull request #147 from sveltejs/gh-138

don't serve error page for unhandled server route errors
This commit is contained in:
Rich Harris
2018-02-28 17:11:52 -05:00
committed by GitHub
3 changed files with 27 additions and 4 deletions

View File

@@ -234,9 +234,21 @@ function get_route_handler(chunks: Record<string, string>, routes: RouteObject[]
};
}
handler(req, res, () => {
handle_not_found(req, res, 404, 'Not found');
});
const handle_error = (err?: Error) => {
if (err) {
console.error(err.stack);
res.statusCode = 500;
res.end(err.message);
} else {
handle_not_found(req, res, 404, 'Not found');
}
};
try {
handler(req, res, handle_error);
} catch (err) {
handle_error(err);
}
} else {
// no matching handler for method — 404
handle_not_found(req, res, 404, 'Not found');
@@ -294,7 +306,7 @@ function get_route_handler(chunks: Record<string, string>, routes: RouteObject[]
}));
}
return function find_route(req: Req, res: ServerResponse, next: () => void) {
return function find_route(req: Req, res: ServerResponse) {
const url = req.pathname;
try {

View File

@@ -0,0 +1,3 @@
export function get() {
throw new Error('nope');
}

View File

@@ -391,6 +391,14 @@ function run(env) {
JSON.parse(text);
});
});
it('does not serve error page for non-page errors', () => {
return nightmare.goto(`${base}/throw-an-error`)
.page.text()
.then(text => {
assert.equal(text, 'nope');
});
});
});
describe('headers', () => {