无法访问 url.searchParams 预渲染 - SvelteKit

问题描述 投票:0回答:1

我想从我的页面 ( 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 基于参数,但不是主要参数。它可能会被其他参数过滤。

sveltekit prerender urlsearchparams
1个回答
0
投票

这是 Rich 的评论,解释了为什么在预渲染期间不能使用搜索参数:

预渲染时,您正在将文件写入文件系统,以便简单的网络服务器可以为它们提供服务。查询参数不能存在于文件系统上(从字面意义上讲,

?
不是所有文件系统上允许的字符,并且网络服务器将忽略它们),因此,如果您有一个名为
 的预渲染端点/api/posts/get
那么无论你用不同的参数调用它多少次,它都只能保存为文件一次。文件需要有不同的路径(
/api/posts/[slug]
),否则无法工作。

解决这个问题的方法是使用

beforeUpdate
:

<script>
  let myParameters = null;
  beforeUpdate(() => {
    myParameters =  url.searchParams.get('my-parameter');
  });
</script>

<div>
  <!-- Use `myParameter` -->
</div>
© www.soinside.com 2019 - 2024. All rights reserved.