【发布时间】:2022-03-02 09:15:44
【问题描述】:
我有一个非常基本的 sveltekit 项目 (:3000),它有一个使用后端的简单路由结构 (:5000):
├── ./src
│ ├── ./src/app.html
│ ├── ./src/routes
│ │ ├── ./src/routes/index.svelte
│ │ ├── ./src/routes/__layout.svelte
│ │ └── ./src/routes/view
│ │ ├── ./src/routes/view/[id].svelte
│ │ └── ./src/routes/view/index.svelte
想象一下routes/index.svelte 中的公司列表,它预取了悬停在<a sveltekit:prefetch href="/view/${company._id}">...</a> 上的上市公司数据。
在 Chrome devtools 中,http://localhost:5000/company/6203a1d7c36d6f78f5979f26 显示它工作正常。然而由于某种原因,当我点击链接时,sveltekit 正在获取http://localhost:3000/view/favicon.png,这显然不存在,因为它位于app/src/static/favicon.png。
有人见过吗?我是否错过了关于如何处理由子路径调用的静态资产的明显要点?或者更确切地说:为什么子路径路由甚至调用根资产?
/routes/view/[id].svelte 的代码:
<script context="module" lang="ts">
export const load = async ({ fetch, params }) => {
const id = params.id;
const url = `http://localhost:5000/company/${id}`;
const res: Response = await fetch(url);
const company = await res.json();
if (res.ok) {
return { props: {company} }
}
return { status: res.status }
}
</script>
<script lang="ts">
export let company: Company;
</script>
<h1>{company.name}</h1>
...
/routes/view/index.svelte 文件应该没有问题,它可以处理简单的重定向:
<script context="module" lang="ts">
export async function load() {
return {
status: 302, redirect: "/"
}
}
</script>
<script>
load();
</script>
【问题讨论】:
标签: sveltekit