React Native Runtime Error: No native client found. Is Bugsnag React Native installed in your native code project?

React Native Runtime Error: No native client found. Is Bugsnag React Native installed in your native code project?

我正在尝试将 bugsnag 集成到我的 React 本机应用程序中。该应用程序构建成功,但当该应用程序在模拟器或仿真器上加载时会引发异常

Bugsnag: No native client found. Is BugsnagReactNative installed in your native code project?
Client

<unknown>
    global.js:4:27
loadModuleImplementation
    require.js:331:6
<unknown>
    index.android.js:9
loadModuleImplementation
    require.js:331:6
guardedLoadModule
    require.js:197:45
global code

我更新了我的 AndroidManifest.xml、MainApplication.java、Info.plist、build.gradle 以包含 api-key 并且 bugsnag-react-native 成功也是。

我的 package.json 版本看起来像

"react": "16.8.3",
"react-native": "0.59.10",
"bugsnag-react-native": "^2.23.2",

AndroidManifest.xml

 <meta-data android:name="com.bugsnag.android.API_KEY"
               android:value="API KEY"/>

MainApplication.java

@Override
 public void onCreate() {
    super.onCreate();
    BugsnagReactNative.start(this);
    SoLoader.init(this, /* native exopackage */ false);
  }

info.plist

<key>BugsnagAPIKey</key>
<string>API KEY</string>

来自 Bugsnag Basic Configuration,您缺少以下内容:

Import and initialize Bugsnag within your app’s entry point, typically index.js (or index.ios.js and index.android.js):

import { Client } from 'bugsnag-react-native';
const bugsnag = new Client('YOUR-API-KEY-HERE');

你不需要在 info.plist 文件中有键值,除非你从那里加载值(我认为你不是)

如果你做了 react-native link bugsnag-react-native。 如果您遇到此问题,则需要进行以下更改。我找到了解决方案。

在你 Android/settings.gradle 把 include bugsnag-react-native 放在 include ':app'

include ':app'
include ':bugsnag-react-native'
project(':bugsnag-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/bugsnag-react-native/android')

确保您的 Xcode 中有二进制文件 linked。为此 select 您在 Xcode 中的项目,单击构建阶段,link 带有库的二进制文件并添加以下库。要在 Xcode 中从 node_modules 手动导入 bugsnag-react-native,请遵循下面的 link

libz.tbd and 
libBugsnagReactNative.a

在您的 MainApplication.java 中添加 getPackages()

protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
new MainReactPackage(), BugsnagReactNative.getPackage()

这应该可以完成工作。

Bugsnag 文档 Manual linking

在您的 MainApplication.java 中,您可能需要将以下内容添加到文件的顶部:

import com.bugsnag.BugsnagReactNative;