handleError
フックを使用すると、予期しないエラーをインターセプトし、Slackチャンネルにpingを送信したり、エラーログサービスにデータを送信するなど、何らかの動作をトリガーできます。
以前の演習で思い出したように、エラーは@sveltejs/kit
のerror
ヘルパーで作成されなかった場合、予期しないものです。これは一般的に、アプリ内の何らかの修正が必要であることを意味します。デフォルトの動作はエラーをログに記録することです。
src/hooks.server
export function handleError({ event, error }) {
console.error(error.stack);
}
/the-bad-place
に移動すると、これが実際に動作していることがわかります。エラーページが表示され、(URLバーの右側にあるボタンを使用して)ターミナルを開くと、src/routes/the-bad-place/+page.server.js
からのメッセージが表示されます。
ユーザーにエラーメッセージを表示していないことに注意してください。それはエラーメッセージに、最悪の場合、悪人に役立ち、最良の場合でもユーザーを混乱させる可能性のある機密情報が含まれる可能性があるからです。代わりに、アプリケーションで利用可能なエラーオブジェクト(+error.svelte
ページの$page.error
として、またはsrc/error.html
フォールバックの%sveltekit.error%
として表される)は、これだけです。
{
message: 'Internal Error' // or 'Not Found' for a 404
}
状況によっては、このオブジェクトをカスタマイズしたい場合があります。それを行うには、handleError
からオブジェクトを返すことができます。
src/hooks.server
export function handleError({ event, error }) {
console.error(error.stack);
return {
message: 'everything is fine',
code: 'JEREMYBEARIMY'
};
}
カスタムエラーページでmessage
以外のプロパティを参照できるようになりました。src/routes/+error.svelte
を作成します。
src/routes/+error
<script>
import { page } from '$app/stores';
</script>
<h1>{$page.status}</h1>
<p>{$page.error.message}</p>
<p>error code: {$page.error.code}</p>
前へ 次へ
1
<h1>home</h1>