mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-13 11:35:28 +00:00
handle errors in client
This commit is contained in:
@@ -59,6 +59,7 @@ function generate_client(
|
||||
let code = `
|
||||
// This file is generated by Sapper — do not edit it!
|
||||
import root from '${posixify(`${path_to_routes}/index.html`)}';
|
||||
import error from '${posixify(`${path_to_routes}/_error.html`)}';
|
||||
|
||||
${routes.components.map(component =>
|
||||
`const ${right_pad(component.name, len)} = () => import('${posixify(`${path_to_routes}/${component.file}`)}');`)
|
||||
@@ -67,8 +68,6 @@ function generate_client(
|
||||
export const routes = {
|
||||
ignore: [${server_routes_to_ignore.map(route => route.pattern).join(', ')}],
|
||||
|
||||
root,
|
||||
|
||||
pages: [
|
||||
${routes.pages.map(page => `{
|
||||
// ${page.parts[page.parts.length - 1].component.file}
|
||||
@@ -86,7 +85,9 @@ function generate_client(
|
||||
}`).join(',\n\n\t\t\t\t')}
|
||||
],
|
||||
|
||||
error: () => import(/* webpackChunkName: '_error' */ '${posixify(`${path_to_routes}/_error.html`)}')
|
||||
root,
|
||||
|
||||
error
|
||||
};`.replace(/^\t\t/gm, '').trim();
|
||||
|
||||
if (dev()) {
|
||||
|
||||
@@ -123,10 +123,6 @@ function prepare_page(target: Target): Promise<{
|
||||
error = { statusCode: 500, message: err };
|
||||
return [];
|
||||
}).then(results => {
|
||||
if (error) {
|
||||
console.error('TODO', error);
|
||||
}
|
||||
|
||||
if (redirect) {
|
||||
return { redirect };
|
||||
}
|
||||
@@ -134,6 +130,25 @@ function prepare_page(target: Target): Promise<{
|
||||
const get_params = page.parts[page.parts.length - 1].params || (() => ({}));
|
||||
const params = get_params(target.match);
|
||||
|
||||
if (error) {
|
||||
const props = {
|
||||
path,
|
||||
query,
|
||||
params,
|
||||
error: typeof error.message === 'string' ? new Error(error.message) : error.message,
|
||||
status: error.statusCode
|
||||
};
|
||||
|
||||
return {
|
||||
data: Object.assign({}, props, {
|
||||
child: {
|
||||
component: routes.error,
|
||||
props
|
||||
}
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
// TODO skip unchanged segments
|
||||
const props = { path, query };
|
||||
const data = { path, query, params, child: {} };
|
||||
|
||||
Reference in New Issue
Block a user