2016-12-23 1 views
2

Ich verwende react-native-oauth und immer diese Fehlermeldung (siehe rotes Bild unten), wenn genehmigen will. Ich habe nur gesucht und gefunden similar unanswered question. Ich schaute in die Quelle und fand where the error is raised auf der Linie 954 und es scheint, es ist, weil moduleIDs.countmethodIDs.count und paramsArrays.count sollte gleich:RCTBatchedBridge.m Fehler: Ungültige Datennachricht - alle müssen Länge:% zd. Reagieren Ureinwohner, iOS Simulator

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

Also, noch in the source, ich sehe für diese Objekte und finden sie definiert nur oben auf den Leitungen 943-945 und sie verwenden RCTConvert, dessen Funktionen "... alle einen JSON-Wert als Eingabe akzeptieren und ihn einem nativen Objective-C-Typ oder einer Klasse zuordnen." - React's docs

So scheint es, wie dies ein transpiling und/oder damit verbundene Fehler zu vernetzen. Aber ich habe im Grunde genommen kein Wissen über diese Gebiete und ich habe das Gefühl, dass ich eine Schranke für Untersuchungen gefunden habe und frage mich, ob irgendjemand irgendwelche Ideen zum Vorwärtskommen hat. Neu zu sein, Native zu reacten und nie ein Objective-C gemacht zu haben, kann mir nicht helfen.

Auch hier ist mein Code, um die Fehler zu erzeugen.

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)); 
} 

ich diesen undefinierten Fehler bin zu raten, ist mit dem RCTBridge Fehler verwendet, aber nicht sicher. Sie können unten sehen, wenn ich den gefangenen Fehler manager.authorize alarmiere. TypeError: undefined is not an object (evaluating 'fn'):

enter image description herethis error

Edit:

Wenn ich versuche, das config Objekt zu warnen, ich erhalte eine Fehlermeldung über nicht in der Lage zu sein Unterobjekt ist es zu stringify. enter image description here

Wenn in der Konsole in Chrom Debugger suchen, erhalte ich „Kann nicht lesen Eigenschaft‚configureProvider‘undefinierter“ und configureProvider() ist, was react-native-oauth verwendet, so sieht es aus wie der Manager rechts so nicht eingerichtet ist, vielleicht habe ich das nicht verlinken Bibliothek gut. Habe die Verknüpfung überprüft.

Im Graben in die Fehler ein bisschen und es scheint wie ein Versprechen/Callback-Problem von NativeModules.OAuthManager. Der festgestellte Fehler lautet: TypeError: Cannot read property 'authorize' of undefined. Wenn ich in den Stapel trete, finde ich: enter image description here

Jede Hilfe wird sehr geschätzt, danke.

Antwort

1

Sie werden diese Fehlermeldung erhalten, wenn Sie einige falsche Daten in nativer Seite senden. Zum Beispiel, wenn Sie eine Zeichenfolge übergeben sollten, aber ein Objekt übergeben haben.

Bitte console.log Ihre config Variable.

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

Ich denke, Sie einige falsche Daten in nativer Seite für mich

+0

Stellen Sie außerdem sicher, dass Sie die Bibliothek ordnungsgemäß verbunden haben –

2

So geschickt, was falsch ein Setup-Problem war mit react-native-oauth vorging, weil alles selbst festgelegt hat, seit ich gerollt habe wieder zu ein Punkt, an dem mein Code keine weiteren Abhängigkeiten hatte (ich hatte Firestack installiert) und neu eingerichtet, nachdem ich die Dokumente von react-native-oauth gelesen hatte.Ich erkannte, dass es einen Schritt auf iOS/XCode Seite, die ich verpasst hatte, weil, als ich ursprünglich habe ich versucht, die Datei nicht finden konnte so nur diesen Schritt übersprungen:

Von react-native-oauth readme

Next, navigate to the neighboring "Build Phases" section of project settings, find the "Link Binary with Library" drop down, expand it, and click the "+" to add libOAuthManager.a to the list.

Die Fehler Ich bekam ein paar Schritte entfernt, aber ich bin mir sicher, irgendwie verbunden. Lessons Learned: Versuche nicht, zu viele Dinge auf einmal zu machen und überspringe nicht die erforderlichen Schritte.