在 Hooks / Sveltekit 中返回错误页面

yon*_*lee 9 sveltekit

该文档对于显示 Hooks 的错误页面似乎有点含糊。我正在寻找一种有条件地显示 404 页面的方法。

export async function handle({ event, resolve }) {
  return new Response('This page does not exist.', {status: 404})
}
Run Code Online (Sandbox Code Playgroud)

这会以纯文本形式返回状态 404 页面,但我希望它返回带有布局的错误页面,而不仅仅是文本。有API可以使用吗?或者我应该重定向到404页面?

Céd*_*pay 0

可能有更好的方法,但您可以设置event.route以便resolve函数返回错误页面:

export const handle = (async ({ event, resolve }) => {
  if (shouldBeNotFound(event)) {
    event.route = {id: null};
  }
 
  const response = await resolve(event);
  return response;
}) satisfies Handle;
Run Code Online (Sandbox Code Playgroud)

这将导致resolve认为该页面与您应用程序的任何路由都不匹配,并渲染您的最顶层+error.svelte.