主页和错误页面的segment
中的_layout.svelte
变量均为undefined
。我想为这些页面呈现不同的页面,但无法在_layout.svelte
中找到一种方法。
答案 0 :(得分:0)
从Sapper 0.27.9
版本开始,这是不可能的。
但是,有一种解决方法。
进入您的项目,然后在此路径下编辑文件
[project-name]/node_modules/sapper/runtime/app.mjs
转到handle_error
函数,然后寻找const props = {...
将segments: preloaded
键:值更改为segments: ['_error']
现在转到hydrate_target
函数
将const segments = page.path.split('/').filter(Boolean);
更改为
const segments = page.path === '/' ? ['index'] : page.path.split('/').filter(Boolean);
完成此操作后,请使用npm run dev
启动应用,然后segment
应该是_error
或index
而不是undefined
,具体取决于您正在浏览的页面。
答案 1 :(得分:0)
由于Sapper 0.28.9
,可以在$page.error
中使用_layout.svelte
:
<script>
import { stores } from '@sapper/app';
const { page } = stores();
</script>
{#if !$page.error}
<!-- error pages sit outside of the default layout-->
<slot />
{:else}
<fancy-layout>
<slot />
</fancy-layout>
{/if}