我想从我的页面 ( https://www.bizraport.pl/organizacje ) 预渲染特定链接。我的问题是该页面使用(在
+page.server.js
和 +page.svelte
中)url.searchParams.get
导致错误:
错误:无法访问启用预渲染的页面上的 url.searchParams
我确实知道可以使用参数创建无限数量的网址。然而在我的
+page.server.js
中添加了 export const prerender = 'auto';
和 svelte.config.js
:
prerender: {
entries: ["/organizacje"],
},
那么为什么它不够智能,只获取页面
/organizacje
而不用担心任何url参数。如果有的话应该是标准方法(没有预渲染)
有关类似主题的链接:
https://dev.to/marcdaframe/sveltekit-dynamic-routes-static-renderer-17dl
使用adapter-static时如何在sveltekit上使用get参数?
尝试使预渲染器适用于特定的网址。该 url 基于参数,但不是主要参数。它可能会被其他参数过滤。
这是 Rich 的评论,解释了为什么在预渲染期间不能使用搜索参数:
预渲染时,您正在将文件写入文件系统,以便简单的网络服务器可以为它们提供服务。查询参数不能存在于文件系统上(从字面意义上讲,
不是所有文件系统上允许的字符,并且网络服务器将忽略它们),因此,如果您有一个名为?
的预渲染端点那么无论你用不同的参数调用它多少次,它都只能保存为文件一次。文件需要有不同的路径(/api/posts/get
),否则无法工作。/api/posts/[slug]
解决这个问题的方法是使用
beforeUpdate
:
<script>
let myParameters = null;
beforeUpdate(() => {
myParameters = url.searchParams.get('my-parameter');
});
</script>
<div>
<!-- Use `myParameter` -->
</div>