如何在 React Native 应用程序中报告不同的错误



是否有解决方案可以在 React Native 应用程序(iOS 和 Android(中报告不同的错误作为全局处理程序?

我对以下情况感兴趣:

  1. 未处理的拒绝
  2. 未处理的异常
  3. 本机端的错误

通过报告,我的意思是将它们发送到一些第三方服务,在那里您可以跟踪错误。

在 RN 中有一个 ErrorUtils 全局处理程序,用于处理 RN JS 层的未捕获和捕获异常。您可以使用它来设置处理程序,如下所示:

if (ErrorUtils._globalHandler) {
            instance.defaultHandler = ErrorUtils.getGlobalHandler && ErrorUtils.getGlobalHandler() || ErrorUtils._globalHandler;
            ErrorUtils.setGlobalHandler(instance.wrapGlobalHandler);  //feed errors directly to our wrapGlobalHandler function
        }

和处理程序方法

async wrapGlobalHandler(error, isFatal){
      const stack = parseErrorStack(error);
     //Add this error locally or send it your remote server here
      //*> Finish activity
      setTimeout (() => {
        instance.defaultHandler(error, isFatal);  //after you're finished, call the defaultHandler so that react-native also gets the error
        if (Platform.OS == 'android') {
          NodeModule.reload()
        }
      }, 1000);
  }

请注意,在上面的代码中,您需要仅为 android 创建一个节点模块,并在 ReactContextBaseJavaModule 中编写一个 React Native 桥接方法:

@ReactMethod
    public void reload() {
        Activity activity = getCurrentActivityInstance();
        Intent intent = activity.getIntent();
        activity.finish();
        activity.startActivity(intent);
    }

谢谢!

相关内容

  • 没有找到相关文章