1

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

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

当我使用带有模块应用程序的新反应项目时,按照文档所述安装代码推送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不明确的。有人知道它有什么问题吗?

4

1 回答 1

1

最后我通过在我的 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,您应该在 mReactInstanceManageraddPackage中添加 CodePush。希望这能有所帮助。

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

于 2017-06-06T01:12:10.260 回答