直接取自sveltekit文档.当返回404 on page load时,将发生一个未捕获的异常,导致页面中断:

<script context="module">
    /** @type {import('./__types/[...path]').Load} */  
    export function load({ params }) {
      return {
        status: 404,
        error: new Error(`Not found: /marx-brothers/`)
      };
    }
</script>

上述情况会导致控制台中出现未捕获错误:

enter image description here

这将导致任何其他JS无法工作,例如:单击事件等.

文件没有对此事作进一步阐述:https://kit.svelte.dev/docs/layouts#error-pages

有人能解释为什么在页面加载时返回404状态时会引发未捕获异常吗?我怎样才能最好地解决这个问题?非常感谢.

编辑:我在布局上返回404.小页面是其他页面继承的默认布局页面.这样做有问题吗?

推荐答案

update:

我能够使用演示应用程序再现未捕获的异常,并将代码段添加到布局中.苗条的尽管有例外,但页面呈现正常.我没有测试JS是否损坏;大多数404页都很简单.(请参见新屏幕截图.)

我确实确认了将error: new Error(...)更改为简单字符串仍然会导致未捕获的异常.

从布局返回404响应是非常奇怪的.苗条的布局旨在用于呈现常见的UI元素(可能还有常见的逻辑,例如在身份验证后保护页面)

404状态逻辑判断和响应逻辑应放在主索引中.纤细的锉刀.如果路由不存在,SvelteKit将自动生成404响应本身.

Screenshot when modifying Demo app:

enter image description here


Old answer

I was unable to reproduce the uncaught exception. SvelteKit rendered a 404 page, as expected:

enter image description here

My (original) process to reproduce:

  1. npm init svelte load404( Select 骨架项目,默认选项)
  2. cd load404
  3. yarn
  4. 将问题中的代码段逐字复制到索引中.苗条:
<script context="module">
    /** @type {import('./__types/[...path]').Load} */  
    export function load({ params }) {
      return {
        status: 404,
        error: new Error(`Not found: /marx-brothers/`)
      };
    }
</script>
  1. yarn dev --open

Javascript相关问答推荐

在JavaScript中打开和关闭弹出窗口

为什么使用MAX_SAFE_INTEGER生成随机整数时数字分布不准确?

React:未调用useState变量在调试器的事件处理程序中不可用

Cypress -使用commands.js将数据测试id串在一起失败,但在将它们串在一起时不使用命令有效

使用复选框在d3.js多折线图中添加或删除线条

docx.js:如何在客户端使用文档修补程序

为什么ngModel不能在最后一个版本的Angular 17上工作?'

Msgraph用户邀请自定义邮箱模板

为什么promise对js中的错误有一个奇怪的优先级?

WebGL 2.0无符号整数输入变量

material UI按钮组样式props 不反射

rxjs插入延迟数据

当我try 将值更改为True时,按钮不会锁定

如何在FastAPI中为通过file:/URL加载的本地HTML文件启用CORS?

传递方法VS泛型对象VS事件特定对象

图表4-堆叠线和条形图之间的填充区域

通过跳过某些元素的对象进行映射

如何修复错误&语法错误:不能在纯react 项目中JEST引发的模块&之外使用导入语句?

Reaction即使在重新呈现后也会在方法内部保留局部值

P5play SecurityError:无法从';窗口';读取命名属性';Add';:阻止具有源的帧访问跨源帧