菜鸟教程小白 发表于 2022-12-13 16:59:16

ios - Javascript/Native 代码不同步(参数数量不同)错误


                                            <p><p>我最近从 1.24 更新到 <a href="https://github.com/wix/react-native-controllers" rel="noreferrer noopener nofollow">ReactNativeControllers</a> 2.03。我还将 RN 更新为 0.25。我正在使用仅添加 Podspec 文件的 <a href="https://github.com/adamski/react-native-controllers" rel="noreferrer noopener nofollow">fork</a>。在整理出 RN 中的所有导入更改后,我现在被这个错误难住了:</p>

<p>(另见 <a href="https://github.com/wix/react-native-controllers/issues/59" rel="noreferrer noopener nofollow">https://github.com/wix/react-native-controllers/issues/59</a> )</p>

<blockquote>
<p>RCCManager.setRootController was called with 3 arguments, but expects
2.
               If you haven&#39;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.</p>
</blockquote>

<p>有问题的代码:</p>

<p>在<code>RCCManagerModule.m</code>:</p>

<pre><code>setRootController:(NSDictionary*)layout animationType:(NSString*)animationType globalProps:(NSDictionary*)globalProps)
</code></pre>

<p>在<code>index.js</code>中:</p>

<pre><code>ControllerRegistry: {
    registerController: function (appKey, getControllerFunc) {
      _controllerRegistry = getControllerFunc();
    },
    setRootController: function (appKey, animationType = &#39;none&#39;, passProps = {}) {
      var controller = _controllerRegistry;
      if (controller === undefined) return;
      var layout = controller.render();
      _validateDrawerProps(layout);
      RCCManager.setRootController(layout, animationType, passProps);
    }
},
</code></pre>

<p>很明显,两者都有 3 个参数。 </p>

<p>我已经杀死并重新启动了打包程序。我已经清理了包含派生数据的 Xcode 项目,并使用 <code>watchman watch-del-all</code> 删除了 watchman 缓存。我已经删除了我的 <code>node_modules</code> 文件夹,完成了 <code>npm install</code> 和 <code>pod install</code>。 </p>

<p>我已经重建了 Xcode 项目。仍然没有运气。我不知道如何进一步调试。 </p>

<p>编辑:我还尝试清理 pod 缓存,更新到 Cocoapods 1.01...</p>

<p>我觉得这里的某个地方可能有一条红鲱鱼。作为引用,我的完整跟踪如下所示:</p>

<pre><code>2016-06-10 14:15:18.179 Warning: ReactNative.Component is deprecated. Use React.Component from the &#34;react&#34; package instead.
2016-06-10 14:15:18.239 JustTuner Launching Couchbase Lite...
2016-06-10 14:15:19.048 JustTuner Couchbase Lite url = http://adamwilsonsMBP.lan:5984/
2016-06-10 14:15:19.050 JustTuner Launching Couchbase Lite...
2016-06-10 14:15:19.058 JustTuner Couchbase Lite url = http://adamwilsonsMBP.lan:5984/
2016-06-10 14:15:19.538 RCCManager.setRootController was called with 3 arguments, but expects 2.                   If you haven&#39;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.
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在花了很多时间试图解决这个问题后,我发现 <code>build/Products/Debug-iphonesimulator</code> 中有一个过时的静态库 <code>libReactNativeControllers.a</code>。 </p>

<p>删除 <code>libReactNativeControllers.a</code> 并重建项目解决了这个问题。 </p>

<p>Pod 静态库现在似乎保存在它们各自的文件夹中,例如<code>build/Products/Debug-iphonesimulator/ReactNativeControllers/libReactNativeControllers.a</code></p>

<p>我的猜测是最近的构建将静态库保存在子文件夹中,但链接器正在选择过时的库。任何人都知道为什么这可能最近发生了变化? </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Javascript/Native 代码不同步(参数数量不同)错误,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37749590/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37749590/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Javascript/Native 代码不同步(参数数量不同)错误