我最近从 1.24 更新到ReactNativeControllers 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 缓存watchman watch-del-all
。我已经删除了我的node_modules
文件夹,完成npm install
和pod install
.
我已经重建了 Xcode 项目。仍然没有运气。我不知道如何进一步调试。
编辑:我还尝试清理 pod 缓存,更新为 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.