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

SvelteKit:复用JavaScript函数时page URL始终为undefined的问题

问题原因与解决方法

你的核心错误是没搞懂Svelte store的工作机制:page是Svelte提供的readable store,不是普通JavaScript对象,直接访问page.url根本拿不到实际的URL值——因为store的内部状态是被封装的,必须通过订阅或者get函数才能获取。

两种修正方案:

方案1:在复用函数里用get同步获取store当前值

修改reusableScript.js,引入svelte/store里的get函数,用它读取page store的当前状态:

// reusableScript.js
import { page } from '$app/stores';
import { get } from 'svelte/store';

export default () => {
  return get(page).url;
}

这样调用script()时,就能直接拿到当前的URL值了。

方案2:返回store本身,在组件里用$前缀自动订阅

如果需要实时响应URL变化(比如路由切换时自动更新),可以让复用函数直接返回page store,然后在组件里用Svelte的$语法糖自动订阅:

// reusableScript.js
import { page } from '$app/stores';

export default () => {
  return page;
}

组件里调整为:

<!-- Component.svelte -->
<script>
  import { script } from '$lib';
  const pageStore = script()
</script>

<div>
  {$pageStore.url}
</div>

补充说明

你原来的代码里,page对象本身并没有url属性——它只是一个包含subscribe方法的store容器,内部状态需要通过特定方式读取,直接访问自然会得到undefined。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:32:06