RCTBatchedBridge.m错误:无效的数据消息 – 所有必须是长度:%zd。 React Native,iOS模拟器

我正在使用react-native-oauth并在尝试授权时收到此错误(请参阅底部的红色图片)。 我搜索过,发现只有这个类似的未回答的问题 。 我查看了源代码并找到了第954行引发错误的位置 ,这似乎是因为moduleIDs.count应该等于methodIDs.countparamsArrays.count

  if (RCT_DEBUG && (moduleIDs.count != methodIDs.count || moduleIDs.count != paramsArrays.count)) { RCTLogError(@"Invalid data message - all must be length: %zd", moduleIDs.count); 

因此,仍然在源代码中 ,我查找这些对象,并在第943-945行找到它们,并且它们正在使用RCTConvert,其函数“… all接受JSON值作为输入并将其映射到本机Objective -C类型或类。“ – React的文档

所以这似乎是一个与转换和/或网络相关的错误。 但我对这些领域基本上没有任何了解,并且觉得我已经遇到了调查的障碍,并想知道是否有人对前进有任何想法。 成为React Native的新手并且从未做过任何Objective-C无法帮助我。

此外,这是我的代码生成错误。

 import OAuthManager from 'react-native-oauth'; import { Alert } from 'react-native' var env = require('../environment.js') const config = { facebook: { client_id: env.getKey("FB_ID"), client_Secret: env.getKey("FB_SECRET") } } const manager = new OAuthManager('myAppName') manager.configure(config); exports.authWithFb = () => { manager.authorize('facebook') .then(resp => Alert.alert('response!' + resp)) .catch(err => Alert.alert('error msg here: ' + err)); } 

我猜这个未定义的错误与RCTBridge错误有关,但不确定。 您可以在下面看到我警告manager.authorize的捕获错误。 TypeError: undefined is not an object (evaluating 'fn')

在此处输入图像描述 这个错误

编辑:

当我尝试警告config对象时,我收到一个错误,即无法将其字符串化为子对象。 在此处输入图像描述

当在chrome调试器中查看控制台时,我得到“无法读取属性’configureProvider’的未定义”和configureProvider()react-native-oauth使用的所以它看起来像管理器没有设置正确所以也许我没有链接图书馆很好。 已检查链接工作。

我正在深入研究错误,似乎是来自NativeModules.OAuthManager的承诺/回调相关问题。 捕获的错误是: TypeError: Cannot read property 'authorize' of undefined 。 当我跳进堆栈跟踪时,我发现: 在此处输入图像描述

非常感谢任何帮助,谢谢。

因此,对于我来说,无论出现什么问题都是react-native-oauth的设置问题,因为我已经回归到我的代码没有其他依赖项(我也安装了Firestack)并从头开始设置的一切再次关注react-native-oauth的文档。 我意识到在iOS / XCode方面有一个步骤,我错过了,因为当我最初尝试时,我找不到该文件,所以只是跳过了这一步:

来自react-native-oauth自述文件

接下来,导航到项目设置的相邻“Build Phases”部分,找到“Link Binary with Library”下拉列表,展开它,然后单击“+”将libOAuthManager.a添加到列表中。

我得到的错误是从这里删除了几个步骤但我确定以某种方式连接。 经验教训:不要试图同时做太多事情,也不要跳过所需的步骤。

当您将一些错误的数据发送到本机端时,您将收到此错误。 例如,如果您应该传递字符串但是您传递了一个对象。

请console.log你的config变量。

https://www.npmjs.com/package/react-native-oauth

我猜你在本机方面发送了一些错误的数据