You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SvelteKit的PageLoad中访问Store异常:无法获取可写状态值

问题:SvelteKit +page.js中无法获取可写存储值,返回空值

我尝试在+page.js中访问一个可写存储(writeable),但返回空值。代码如下:

import { isAuthenticated, user } from '../../authstore';

export const load = async ({ fetch }) => {

    console.log ('doing load')
    console.log('is auth = ', isAuthenticated)

    if (! isAuthenticated) {
        throw redirect(302, '/');
    }

    return {test:''};
}

我通过这段代码在+page.js中检查用户登录状态,若未登录则重定向至根目录,但isAuthenticated无法正常获取。请问这是因为代码运行在服务端而非客户端吗?

解答

  • 核心原因就是**+page.js的load函数默认运行在服务端**,Svelte的可写存储(writable store)是客户端专属的状态管理工具,服务端无法直接读取客户端存储内的值,因此你拿到的是空值。
  • 要在服务端实现登录状态校验,得用服务端可访问的凭证,比如Cookie中的会话标识:
    1. 在load函数中通过cookies参数读取登录相关的Cookie
    2. 携带该Cookie调用后端接口,校验会话的有效性
    3. 根据校验结果决定是否执行重定向
  • 若想在客户端做校验,可将逻辑放在+page.svelte的onMount钩子中,但这种方式无法在页面加载前完成重定向,会出现页面闪现的问题,服务端校验的体验更优。

内容的提问来源于stack exchange,提问作者Rob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 14:41:32