SvelteKit:禁用 SSR
SvelteKit: disable SSR
我在 Svelte 中制作了一个应用程序,现在我想将它移植到 SvelteKit。我的应用程序使用 window
和 document
对象,但这些在 SSR 中不可用。首先,它抛出了 ReferenceError: window is not defined
,但我通过检查应用程序在浏览器中是否为 运行 来解决这个问题。但正因为如此,我的应用无法运行。
我很乐意得到一些帮助。
谢谢。
您可以从 handle
挂钩中禁用 server-side 渲染,定义在 src/hooks.js
:
export async function handle({ event, resolve }) {
return resolve(event, { ssr: false });
}
甚至可以有条件地执行此操作,通常是通过检查 event
并做出决定 per-request。
如果您的 use-case 无论如何都需要发生所有事情 client-side,则禁用 SSR 是有意义的。但请注意,由于某些 browser-only 代码 不建议严格禁用它 — 在这种情况下,通常最好使用 browser
检查和动态有条件地执行代码仅导入 client-side 依赖项。我会探索为什么您的应用在跳转至禁用 SSR 之前停止工作。
我在 Svelte 中制作了一个应用程序,现在我想将它移植到 SvelteKit。我的应用程序使用 window
和 document
对象,但这些在 SSR 中不可用。首先,它抛出了 ReferenceError: window is not defined
,但我通过检查应用程序在浏览器中是否为 运行 来解决这个问题。但正因为如此,我的应用无法运行。
我很乐意得到一些帮助。
谢谢。
您可以从 handle
挂钩中禁用 server-side 渲染,定义在 src/hooks.js
:
export async function handle({ event, resolve }) {
return resolve(event, { ssr: false });
}
甚至可以有条件地执行此操作,通常是通过检查 event
并做出决定 per-request。
如果您的 use-case 无论如何都需要发生所有事情 client-side,则禁用 SSR 是有意义的。但请注意,由于某些 browser-only 代码 不建议严格禁用它 — 在这种情况下,通常最好使用 browser
检查和动态有条件地执行代码仅导入 client-side 依赖项。我会探索为什么您的应用在跳转至禁用 SSR 之前停止工作。