首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SvelteKit:禁用SSR

SvelteKit:禁用SSR
EN

Stack Overflow用户
提问于 2022-05-15 18:15:36
回答 3查看 5K关注 0票数 6

我用Svelte制作了一个应用程序,现在我想把它移植到SvelteKit。我的应用程序使用windowdocument对象,但它们在SSR中是不可用的。首先,它抛出了ReferenceError: window is not defined,但我通过检查应用程序是否在浏览器中运行来解决这个问题。但正因为如此,我的应用程序无法工作。

我很乐意得到帮助。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-05-15 21:06:38

可以从handle钩子中禁用src/hooks.js中定义的服务器端呈现。

代码语言:javascript
运行
复制
export async function handle({ event, resolve }) {
    return resolve(event, { ssr: false });
}

甚至有条件地这样做也是可能的,通常通过检查event并根据请求做出决定。

如果您的用例要求所有事情都发生在客户端,那么禁用SSR是有意义的。但是请注意,严格地禁用它是因为某些浏览器代码是不推荐的--在这种情况下,通常最好有条件地执行带有browser检查和动态导入的代码,以满足客户端的依赖关系。我会探索为什么你的应用程序停止工作,然后跳到禁用SSR。

票数 10
EN

Stack Overflow用户

发布于 2022-09-09 08:38:01

由于SvelteKit中的更改,前面的答案不再起作用。有关更多信息,请参见PR:https://github.com/sveltejs/kit/pull/6197和文档:https://kit.svelte.dev/docs/page-options

基本上,现在您在每个页面/布局级别上禁用了SSR,所以而不是在src/hooks.server.js中(是的,hooks.js也作为服务器通过添加客户端挂钩而被分离到客户端)。

代码语言:javascript
运行
复制
export function handle({ event, resolve }) {
  return resolve(event, { 
    ssr: false
  });

你现在做了

代码语言:javascript
运行
复制
// src/routes/+layout.js
export const ssr = false;

请确保在+layout.js中,而不是在+layout.svelte中放置上面的行

票数 11
EN

Stack Overflow用户

发布于 2022-08-11 19:49:32

您还可以禁用svelte.config.js文件中的ssr。请参阅细长结构以查看选项。在整个应用程序中,设置预录制器已启用= false以完全禁用预录制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72251017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档