我正在移动我的应用从Svelte (原版)到Sveltekit多页应用程序(新的)。
在最初的应用程序中,我在顶部配置了一个http客户端,并使用以下方法放置上下文:
setContext(HTTP_CLIENT, httpClient)
现在整个应用程序可以使用
const httpClient = getContext(HTTP_CLIENT)
我这么做是因为我的应用程序可以用调试参数启动,而不是打开http请求日志记录。
我不清楚如何在Sveltekit中实现类似的操作,因为页面似乎不共享上下文。
我试着在会话中插入http客户机,如下所示:
import { session } from "$app/stores";
$session.httpClient = httpClient我得到了:
Error: Failed to serialize session data: Cannot stringify arbitrary non-POJOs
所以$session应该是序列化的,好的。这是否意味着我需要放置用户在$session中提供的任何调试参数,并且每个页面都需要新实例化自己的http客户端?或者还有其他一些惯用的sveltekit方法来做到这一点?
我知道sveltekit有它自己的fetch,所以您可能想说“不要使用您自己的http客户机”,但是我的应用程序使用了许多不同的服务对象(例如graphql客户机),这些对象可以在调试(和其他)模式下配置,所以请不要关注我的示例是一个http客户机这一事实。
发布于 2021-11-17 19:20:32
解决这个问题的一种方法是将配置发送到顶级__layout文件中,在那里创建http客户端并存储在商店中。由于存储是跨所有页面共享的,因此客户端可以自由使用此存储。
https://stackoverflow.com/questions/70001078
复制相似问题