handleError
钩子允许您拦截意外错误并触发某些行为,例如 ping Slack 频道或将数据发送到错误日志服务。
您可能还记得在之前的练习中,如果错误不是使用 @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>