+error.svelte 页面在服务器端检测到错误时不显示

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

我的文件结构是这样的:

/routes
├── [slug]
│   ├── +page.svelte
├── portfolio/[slug]
│   ├── +error.svelte
│   └── +page.svelte
├── +error.svelte
├── +layout.server.js
├── +layout.svelte
├── +page.svelte
└── +server.js

layout.server.js
中,我检查 URL 以发送正确的数据(不确定这是正确的方式,但到目前为止还不错):

// +layout.server.js
import { error } from '@sveltejs/kit';

export async function load({ url }) {
    //...run some code
    if(urlNotfound) {
            throw error(404, 'Not found here');
    }
    return { correctData };
}

我想要显示正确的(或至少任何)

+error.svelte
页面,但没有显示。我一直有本机错误页面。为什么?

error-handling svelte svelte-5
1个回答
0
投票

布局加载函数中的错误工作方式不同:

如果错误发生在

+layout(.server).js
中的加载函数内,则树中最近的错误边界是该布局上方
(而不是旁边)的 
+error.svelte 文件。

因此,如果您在根布局中抛出错误,您将收到默认错误或

src/error.html

 文件(如果存在)(
有关错误响应和此文件的更多信息)。

您可以通过

路线组来解决这个问题,即

/routes ├── (app) │ ├── +layout.server.js | error thrown from here │ └── [everything else...] └── +error.svelte
    
© www.soinside.com 2019 - 2024. All rights reserved.