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

SvelteKit组件无法获取page.server.ts存入Store的Token值

问题:SvelteKit应用中组件无法获取服务端存入Store的Token值

开发基于SvelteKit的Web应用时,遇到组件ModalFlight.svelte无法获取page.server.ts从第三方API获取的Token值的问题。需要在多组件间共享该Token,不想使用Cookie,目前page.server.ts已成功获取Token并存入自定义Store,但点击组件按钮触发alert时无法显示该值。


ModalFlight.svelte代码

<script lang="ts">
    import my_store from '$lib/Store';
    import { get } from 'svelte/store';
    import { page } from '$app/stores';

    $: tokenString = '';
    my_store.subscribe((data) => {
        tokenString = get(my_store).token;
        console.log('subscribed value' + tokenString);
    });

    function fetchFlights() {
        alert(get(my_store).token);
    }
    
</script>

<!-- svelte-ignore a11y-click-events-have-key-events a11y-no-noninteractive-element-interactions -->

<!-- svelte-ignore a11y-no-static-element-interactions -->

<div on:click|stopPropagation class="flightbar">
    
            <button class="btn" on:click={() => fetchFlights()}>Find Flights</button>
</div>

page.server.ts代码

import { amedeus_client_id } from '$env/static/private';
import { amedeus_secret } from '$env/static/private';
import $my_store from '$lib/Store'
import { get } from 'svelte/store';
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");

const urlencoded = new URLSearchParams();
urlencoded.append("grant_type", "client_credentials");
urlencoded.append("client_id", amedeus_client_id);
urlencoded.append("client_secret", amedeus_secret);

function getToken():any{
    let data;
    const requestOptions = {
        method: "POST",
        headers: myHeaders,
        body: urlencoded,
        redirect: "follow"
      };
      
      fetch("https://test.api.amadeus.com/v1/security/oauth2/token", requestOptions)
        .then((response) => response.text())
        .then((result) => {
            const tokenDetails = JSON.parse(result); 
            data = tokenDetails;
            $my_store.set( {'token': tokenDetails.access_token});
            $my_store.update((data) => {
                return {'token': tokenDetails.access_token}
            });
            console.log('hello'+JSON.stringify(get($my_store)));
          //  console.log(JSON.stringify(token));
          //  token.set(tokenDetails.access_token);  
          //  console.log("printing result : "+token)
        })
        .catch((error) => console.error(error));
        return data;
}

export async function load() {
    return {
      posts:  getToken()
    }
  }

Store代码

import {
  writable
} from 'svelte/store';

const my_store = writable({
  'token': 'default value'
});

my_store.set({
  'token': ''
});

export default my_store;

项目结构

项目结构


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:40:56