Skip to content

[Bug] 使用dynamicImport后,会导致有些情况无法捕获到组件的运行时错误 #7390

@CodeChangingMe

Description

@CodeChangingMe

现状

在使用umi的dynamicImport后,如果组件在挂载时有JS运行时异常,比如在render函数中,这些运行时异常最后会被react-loadable捕获。
导致unhandledrejection事件不能捕获到运行时错误,然而这个事件被很多监控系统用来做JS异常捕获。这就影响到了这些监控系统。

codesandbox例子:https://codesandbox.io/s/awesome-elbakyan-nbdvw?file=/src/pages/index.tsx:347-367

预期行为

希望在使用dynamicImport后,unhandledrejection事件能捕获组件挂载时的JS运行时错误。

原因

期望的解决方式

  • 在umi2中,建议把react-loadable依赖限制在5.3.1版本。
  • 在umi3中,建议在catch后throw error。

可能的疑问

运行时错误是不是在开发环境就能被发现?

在绝大多数情况下确实如此,但是在一些场景中,比如:
一个字符串replaceAll函数,这个函数兼容性很差,我们在本地开发环境中很难发现改函数不可调用的问题,我们就期望一些监控系统能帮助我们发现这个错误。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions