首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >React :节点:内部/流程/承诺:246个triggerUncaughtException(错误,真正的/* fromPromise */);

React :节点:内部/流程/承诺:246个triggerUncaughtException(错误,真正的/* fromPromise */);
EN

Stack Overflow用户
提问于 2022-02-11 09:22:06
回答 3查看 31.6K关注 0票数 8

下面的代码在反应中。

代码语言:javascript
运行
复制
useEffect(() => {
        (async () => {
            await httpClient
                .get(`${config.resourceServerUrl}/inventory/`)
                .then((response) => {
                    setSponsor(response.data.sponsor);
                    setAddress(response.data.address);
                    setPhaseOfTrial(response.data.phaseOfTrial);
                })
                .catch((error) => {
                    alert(error);
                });
        })();
    }, []);

此代码工作成功。唯一的问题是,它在开玩笑的测试用例中失败了。

代码语言:javascript
运行
复制
describe('ListInventory', () => {
    it('should render successfully', () => {
        const { baseElement } = render(<ListInventory />);
        expect(baseElement).toBeTruthy();
    });
});

下面是错误。

代码语言:javascript
运行
复制
node:internal/process/promises:246
          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 "TypeError: Cannot read properties of undefined (reading 'get')".] {
  code: 'ERR_UNHANDLED_REJECTION'
}

我已经在使用catch块了。密码里有什么问题吗?你能帮我把同样的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-02-11 09:35:24

尝试使用try-catch块处理承诺,如下所示:

代码语言:javascript
运行
复制
  useEffect(() => {
    (async () => {
      try {
        let response = await httpClient.get(
          `${config.resourceServerUrl}/inventory/`
        );
        setSponsor(response.data.sponsor);
        setAddress(response.data.address);
        setPhaseOfTrial(response.data.phaseOfTrial);
      } catch(error) {
        alert(error);
      }
    })();
  }, []);

代码语言:javascript
运行
复制
  useEffect(() => {
    (async () => {
        let response = await httpClient.get(
          `${config.resourceServerUrl}/inventory/`
        );
        setSponsor(response.data.sponsor);
        setAddress(response.data.address);
        setPhaseOfTrial(response.data.phaseOfTrial);
    })().catch(e=>alert(e));
  }, []);
票数 7
EN

Stack Overflow用户

发布于 2022-07-18 12:42:50

您应该进行测试异步,因为您的代码中有异步调用:

代码语言:javascript
运行
复制
describe('ListInventory', () => {
    it('should render successfully', async() => {
        const { baseElement } = render(<ListInventory />);
        expect(baseElement).toBeTruthy();
    });
});
票数 1
EN

Stack Overflow用户

发布于 2022-05-05 15:20:48

我遇到了类似的问题。

此问题可能是由于response.data旁边的一个对象未定义造成的。添加条件以检查其存在性。

这解决了我的问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71077701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档