E/ReactNativeJS: undefined 不是对象(正在计算 'b.default.sync')

E/ReactNativeJS: undefined is not an object (evaluating 'b.default.sync')

将 codePush 添加到我的项目中,出现错误:

E/ReactNativeJS: undefined is not an object (evaluating 'b.default.sync')

当我使用带有模块应用程序的新 React 项目时,按照文档所述安装代码推送 https://github.com/Microsoft/react-native-code-push/blob/master/docs/setup-android.md

一切都很好。

但是当我将代码推送添加到我现有的项目中时,模块名为 "passenger",而不是 "app",我按照文档的步骤添加代码推送手册。

也将代码添加到 index.android.js

import CodePush from "react-native-code-push";

componentDidMount(){
        console.log("CodePush");
        CodePush.sync();
    }

当我 运行 我的模块时,遇到这个错误。 CodePush 未定义。 有人知道它有什么问题吗?

最后我通过在 MainActivity 中添加一些行解决了这个问题:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mReactRootView = new ReactRootView(this);
    mReactInstanceManager = ReactInstanceManager.builder()
            .setApplication(getApplication())
            .setBundleAssetName("main.bundle")
            .setJSMainModuleName("TingBadgeManager")
            .addPackage(new SQLitePluginPackage())
            .addPackage(new CodePush("xxx", getApplicationContext(), com.xxx.xxx.BuildConfig.DEBUG))       // register CodePush Plugin here
            .addPackage(new MainReactPackage())
            .setUseDeveloperSupport(true)
            .setInitialLifecycleState(LifecycleState.RESUMED)
            .build();
    mReactRootView.startReactApplication(mReactInstanceManager, "TingBadgeManager", null);
    setContentView(mReactRootView);
}

关键点是,如果您在 Activity 中创建 RN,则应在 mReactInstanceManager 中添加带有 addPackage 的 CodePush。 希望这可以帮助。

相关问题:https://github.com/Microsoft/react-native-code-push/issues/871