SvelteKit:禁用 SSR

SvelteKit: disable SSR

我在 Svelte 中制作了一个应用程序,现在我想将它移植到 SvelteKit。我的应用程序使用 windowdocument 对象,但这些在 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 之前停止工作。