2015-04-08 30 views
7

Quando si utilizza Firebase su ReactNative, mostrerà come messaggio di errore:Firebase client su ReactNative

non riesce a trovare processo variabile

Tuttavia, se ho bisogno firebase/lib/firebase-web.js manualmente, verrà visualizzato:

non riesce a trovare il documento variabile

Come posso risolvere questo?

+0

Puoi risolvere facendo ciò che Jason ha fatto qui: https://github.com/badfortrains/wsExample Puoi seguire la discussione qui: https : //groups.google.com/forum/#! topic/firebase-talk/aoPNvQQsVUE –

risposta

1

Semplicemente immaginandolo nostro. La risposta di Pavan è utile, ma non è del tutto vera quando si usa Firebase.

Per Firebase, si prega di seguire le istruzioni:

  1. Scarica il firebase-debug.js da wsExample. Oppure puoi semplicemente installare wsExample da npm e richiedere il firebase-debug.js al suo interno.
  2. Utilizzare badfortrains di biforcuta React-Native:

    "react-native": "git://github.com/badfortrains/react-native#WebSocket" 
    
  3. Nuova la Firebase in questo modo:

    var firebase = require("../../firebase-debug.js"); 
    var rootRef = new Firebase(Const.FB_ROOT); 
    

cose dovrebbe funzionare ora!

4

Ho appena affrontato lo stesso problema durante il tentativo di utilizzare sockets.io nella mia app nativa reattiva, quindi spero di poter aiutare.

Il motivo per cui non è possibile utilizzare il modulo del nodo di Firebase è perché non è stato ancora creato un polyfill per il supporto websockets (da cui dipende il firebase) in modalità nativa.

Se date un'occhiata a issue #619 nel reagire del nativo, troverete la discussione attuale sulla creazione di un polyfill di aps websockets.

Il modo in cui l'abbiamo risolto è utilizzando la versione modificata di Jason della libreria di socket e creando our own repo attorno a quel file. Quindi abbiamo aggiunto la riga seguente alle nostre dipendenze package.json.

"react-sockets": "crewapp/react-native-sockets-io" 

enter image description here

La ragione per cui la versione di Jason del file client sockets.io funziona è perché reagire nativo viene aggiunto come un agente utente. È possibile trovare il codice che rende questo cambio al vertice del file:

window.navigator = { 
    userAgent: "react-native" 
} 

Una volta che hai passato attraverso questi passi si dovrebbe essere in grado di richiedere sockets.io/firebase come normale.

+0

Quindi, usa firebase-web? – lazywei

0

Ho avuto problemi con socket.io anche su React Native, la soluzione era ottenere notifiche sui nuovi dati e se i dati sono abbastanza grandi - basta con la semplice richiesta RESTfull. nel mio caso i dati erano abbastanza piccoli da essere inviati tutti all'interno dell'API delle notifiche.

Stavo usando il servizio GCM per inviare notifiche al telefono dal server nodejs. A proposito, usa meno batteria e quindi funziona perfettamente :)