async函数内部使用error()时,脚本崩溃,并显示以下错误.

使用import { error } from '@sveltejs/kit';

如何在Svelte中从async函数中调用error()

node:internal/process/promises:289
            triggerUncaughtException(err, true /* fromPromise */);
            ^

[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "#<Redirect>".] {
  code: 'ERR_UNHANDLED_REJECTION'
}

Node.js v20.11.0

Code Minimum Sample Code Minimum Sample Code Minimum Sample Src/routes/+page.svelte(基本加载URL)

<script lang="ts">
    import { error } from '@sveltejs/kit';

    const tst = async() => error( 400, 'My error message' );

    tst();
</script>

Case 2此代码在JS控制台中产生一个相似错误(未捕获(In Promise))

<script lang="ts">
    import { error } from '@sveltejs/kit';
    import { onMount } from 'svelte';

    onMount( async function() 
    {
        error( 400, 'My error message' );
    } ); 
</script>

Screenshot

enter image description here

从函数中删除异步确实解决了这个问题,但我想使用异步.

我还希望避免在每个异步函数调用中使用try .. catch.

推荐答案

error用于像load这样的服务器函数,并返回具有各自状态的HTTP响应.如果您从某个服务器端函数获得错误,您可能忘记了对某个函数进行await操作.

您通常不应该在客户端代码中使用/需要error.

在客户机上,我会 Select 在给定页面内显示错误,或者显示类似错误通知的内容,而不是显示整个错误页面(这可能会造成不必要的干扰).

您仍然可以在布局中以setting up a context为单位显示错误页面,并有条件地显示错误组件,而不是包含该页面的槽.上下文可以包含可由出错的页面调用的回调.

Javascript相关问答推荐

容器如何更改默认插槽中子项的显示?

获取加载失败:获取[.]添加时try 将文档添加到Firerestore,Nuxt 3

一次仅播放一个音频

如何通过在提交时工作的函数显示dom元素?

我无法在NightWatch.js测试中获取完整的Chrome浏览器控制台日志(log)

materialized - activeIndex返回-1

Klaro与Angular的集成

微软Edge编辑和重新发送未显示""

如何找出摆线表面上y与x相交的地方?

TypeScript索引签名模板限制

如何使用JavaScript将文本插入空div

手机上的渲染错误文本必须在文本组件中渲染,但在浏览器上没有问题<><>

编辑文本无响应.onClick(扩展脚本)

Eval vs函数()返回语义

如何将数据块添加到d3力有向图中?

使用auth.js保护API路由的Next.JS,FETCH()不起作用

如何在DYGRAPS中更改鼠标事件和键盘输入

未捕获语法错误:Hello World中的令牌无效或意外

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

暂停后只有一次旋转JS