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

时间:2016-12-23 11:55:12

标签: ios objective-c oauth react-native bridge

我正在使用react-native-oauth并在尝试授权时收到此错误(请参阅底部的红色图片)。我搜索过,发现只有similar unanswered question。我查看了源代码并在第954行找到了where the error is raised,似乎是因为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);

所以,仍然在the source中,我寻找这些对象,并在第943-945行找到它们,并且它们正在使用RCTConvert,其函数“...都接受JSON值作为输入和将它映射到本机Objective-C类型或类。“ - React's docs

所以看起来这是一个与转换和/或网络相关的错误。但我对这些领域基本上没有任何知识,并且觉得我已经遇到了调查的障碍,并且想知道是否有人对前进有任何想法。成为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')

enter image description here this error

编辑:

当我尝试警告config对象时,我收到一条错误,指出无法对其子对象进行字符串化。 enter image description here

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

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

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

2 个答案:

答案 0 :(得分:2)

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

来自react-native-oauth readme

  

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

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

答案 1 :(得分:1)

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

请控制您。config变量。

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

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