嵌套布局上的 Svelte Routing 404

Svelte Routing 404 on nested layouts

我正在遵循 SvelteKit 文档中的指南。

在嵌套布局部分,我遇到了一个问题,想知道我是否做错了什么或者这是一个错误。

我有以下布局...(就像在文档中一样!)

/routes/
  /__layout.svelte
  /index.svelte
  /about.svelte
  /settings/
    /__layout.svelte
    /profile.svelte
    /notifications.svelte

/routes/__layout.svelte中我有以下代码:

<nav>
    <a href="./">Home</a>
    <a href="/about">About</a>
    <a href="/settings/profile">Settings</a>
</nav>

<slot />

/routes/settings/__layout.svelte 中我有以下代码:

<h1>/settings</h1>

<div class="submenu">
    <a href="/settings/profile">Profile</a>
    <a href="/settings/notifications">Notifications</a>
</div>

<slot></slot>

每个其他 *.svelte 文件只有一个 h1 标签,其中硬编码了页面路由,例如... <h1>/index</h1> 等等。

我遇到的问题是,当我单击 Settings link 时,它导航到适当的 link,在本例中为 /settings/profile,但是当我单击嵌套的 link /settings/notifications,然后单击任何其他顶部导航 link,例如 Home link,我收到一个 404 错误,显示 Not Found: /settings

如果我再次单击 Home,它会正确显示 /index link。

在 url 条上,路由器似乎只向上移动了一层...所以从 /settings/notifications 转到 /settings,它在路由目录中不存在。

很抱歉 post 并提前感谢任何 help/clarification。

您只需要 index.svelte 设置文件夹中的文件,创建它,这个问题就会消失。

/routes/
  /__layout.svelte
  /index.svelte
  /about.svelte
  /settings/
    /index.svelte
    /__layout.svelte
    /profile.svelte
    /notifications.svelte

我有一个类似的问题,并意识到错误是在 links 中的 href 开头没有包含反斜杠。例如。从路线 src/routes/settings/profile,href="about" 将转到 src/routes/settings/about,而不是 src/routes/about。 link 应该是 href="/about".