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

すべて順調。

しかし、コードプッシュを既存のプロジェクトに追加すると、「app」ではなく「passenger」という名前のモジュールになり、ドキュメントの手順に従い、コードプッシュマニュアルを追加します。

また、コードを追加します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 を作成する場合は、mReactInstanceManager で CodePush を追加する必要があるということですaddPackage。これが役立つことを願っています。

問題関連: https://github.com/Microsoft/react-native-code-push/issues/871

于 2017-06-06T01:12:10.260 に答える