3

最近、ReactNativeControllers 1.24 から 2.03 に更新しました。また、RN を 0.25 に更新しました。Podspec ファイルのみを追加するフォークを使用しています。RN のすべてのインポートの変更を整理した後、次のエラーに悩まされています。

( https://github.com/wix/react-native-controllers/issues/59も参照してください)

RCCManager.setRootController は 3 つの引数で呼び出されましたが、2 が必要です。このメソッドを自分で変更していない場合、これは通常、ネイティブ コードと JavaScript コードのバージョンが同期していないことを意味します。両方を更新すると、このエラーは解消されます。

問題のコード:

RCCManagerModule.m

setRootController:(NSDictionary*)layout animationType:(NSString*)animationType globalProps:(NSDictionary*)globalProps)

とでindex.js

ControllerRegistry: {
    registerController: function (appKey, getControllerFunc) {
      _controllerRegistry[appKey] = getControllerFunc();
    },
    setRootController: function (appKey, animationType = 'none', passProps = {}) {
      var controller = _controllerRegistry[appKey];
      if (controller === undefined) return;
      var layout = controller.render();
      _validateDrawerProps(layout);
      RCCManager.setRootController(layout, animationType, passProps);
    }
  },

明らかなように、どちらにも 3 つのパラメーターがあります。

パッケージャーを強制終了して再起動しました。派生データを含む Xcode プロジェクトをクリーンアップし、watchman キャッシュを .xml で削除しましwatchman watch-del-allた。node_modulesフォルダを削除し、完了npm installpod installました。

Xcode プロジェクトを再構築しました。まだ運がありません。これをさらにデバッグする方法がわかりません。

編集:Cocoapods 1.01に更新されたポッドキャッシュも消去しようとしました...

ここのどこかにアカニシンがいるような気がします。参考までに、私の完全なトレースは次のようになります。

2016-06-10 14:15:18.179 [warn][tid:com.facebook.React.JavaScript] Warning: ReactNative.Component is deprecated. Use React.Component from the "react" package instead.
2016-06-10 14:15:18.239 JustTuner[7523:185768] Launching Couchbase Lite...
2016-06-10 14:15:19.048 JustTuner[7523:185768] Couchbase Lite url = http://adamwilsonsMBP.lan:5984/
2016-06-10 14:15:19.050 JustTuner[7523:185768] Launching Couchbase Lite...
2016-06-10 14:15:19.058 JustTuner[7523:185768] Couchbase Lite url = http://adamwilsonsMBP.lan:5984/
2016-06-10 14:15:19.538 [error][tid:main][RCTModuleMethod.m:456] RCCManager.setRootController was called with 3 arguments, but expects 2.                   If you haven't changed this method yourself, this usually means that                   your versions of the native code and JavaScript code are out of sync.                   Updating both should make this error go away.
4

3 に答える 3

5

これを解決するために何時間も費やした後、古いスタティック ライブラリが にあることがわかりましlibReactNativeControllers.abuild/Products/Debug-iphonesimulator

libReactNativeControllers.aプロジェクトを削除して再構築すると、問題が解決しました。

Pod 静的ライブラリがそれぞれのフォルダーに保存されているようです。build/Products/Debug-iphonesimulator/ReactNativeControllers/libReactNativeControllers.a

私の推測では、最近のビルドでは静的ライブラリがサブフォルダーに保存されていましたが、リンカーは古いライブラリを取得していました。これが最近変更された理由を知っている人はいますか?

于 2016-06-11T10:46:44.463 に答える