2016-06-01 5 views
6

Ich folgte alle Schritte für die Serverkonfiguration in https://firebase.google.com/docs/database/server/retrieve-data#section-start, aber wenn ich versuche, die Referenz im Browser zu erstellen, sagt mir, dass die Anwendung namens [default] existiert bereits. Wenn dann prionio F5 zu der Zeit sagt, dass es "databaseUrl" gibt, muss ich sicherstellen, dass diese Daten beim Starten der Anwendungs-Firebase bereitgestellt werden.Firebase App mit dem Namen '[DEFAULT]' existiert bereits und google Firebase-Referenz funktioniert nicht auf dem Server

var express = require('express'); 
var router = express.Router(); 

var firebase = require('firebase'); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 

    firebase.initializeApp({ 
    serviceAccount: "aaaabbbbcccc.json", 
    databaseUrl: "https://xxxxxyyyyyzzzzz.firebaseio.com/" // <<<<--- it can not find 
    }); 

    var db = firebase.database(); // <<<<---- Here is a problem 
    var ref = db.ref('vistas/principal'); 
    ref.once('value', function(data){ 

    res.render('index', { title: 'Express' }); 

    }); 


}); 

module.exports = router; 

Ich habe andere Berechtigungen, andere Schlüssel usw. erstellt. Aber nichts funktioniert. Vielen Dank.

Knoten -v = v4.2.6 Firebase v3.x

FIREBASE FATAL ERROR: Can't determine Firebase Database URL. Be sure to include databaseURL option when calling firebase.intializeApp(). 

Error: FIREBASE FATAL ERROR: Can't determine Firebase Database URL. Be sure to include databaseURL option when calling firebase.intializeApp(). 
    at Error (native) 
    at ad (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\firebase\database-node.js:37:278) 
    at Object.firebase.INTERNAL.registerService.Reference [as database] (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\firebase\database-node.js:238:113) 
    at O.u (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\firebase\app-node.js:16:94) 
    at Object.d [as database] (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\firebase\app-node.js:18:182) 
    at c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\routes\index.js:14:21 
    at Layer.handle [as handle_request] (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\express\lib\router\layer.js:95:5) 
    at next (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\express\lib\router\route.js:131:13) 
    at Route.dispatch (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\express\lib\router\route.js:112:3) 
    at Layer.handle [as handle_request] (c:\TsPrj\_pruebas\vistas-realtime-desde-firebase\node_modules\express\lib\router\layer.js:95:5) 
+0

Können Sie bitte auch die Firebase SDK-Version erwähnen, die Sie verwenden? Ist es v2.x oder v3.x? – praneybehl

+0

Wenn Sie es erneut in "https://xxxxxyyyyyzzzzz.firebaseio.com/" ansehen, verwenden Sie Ihren Datenbanknamen oder Ihre Projekt-ID? mit v3.x denke ich, dass Sie stattdessen Ihre Projekt-ID verwenden müssen. Zum Beispiel können Sie Ihre Projekt-ID in der neuen Firebase-Konsole finden. Wenn Sie in der Firebase-Konsole zur Datenbank navigieren, überprüfen Sie die URL "https://console.firebase.google.com/project/ /database/data". Ich hoffe es hilft. – praneybehl

+0

Hallo, vielen Dank für Ihre Hilfe, Tatsache ist, dass ich die Version ** 3.x ** benutze und die ID des Projekts verwende (** project_id **). Ich habe die Nachricht nach dem Drücken der F5-Taste angezeigt –

Antwort

0

Sie firebase.initializeApp pro App nur einmal ausgeführt werden soll, vor der router.get By the way, sehen Ihre Exporte seltsam/falsch ... wenn es ein Modul ist, warum rufst du router.get direkt an? Sobald Sie Ihr Modul benötigen, wird es ausgeführt. Warum exportieren Sie Router?

4

here is an answer I wrote for this question

Dies ist ein Problem, das ich auf die neue Version von Firebase in als auch ein Upgrade lief. Möglicherweise möchten Sie zwei separate Firebase-Apps initialisiert haben, aber ich wollte nur die Refs an zwei verschiedenen Orten in meiner App verwenden und es wurde der gleiche Fehler angezeigt.

In dieser Situation müssen Sie ein Firebase-Modul für Ihre App erstellen, das Firebase nur einmal initialisiert, dann importiert oder an anderer Stelle in Ihrer App benötigt.

Sie sollten das gesamte Config-Objekt aus der Firebase-Konsole kopieren und das hier mit dem API-Schlüssel und alles einfügen. Hier

ist ein Beispiel für die Art, wie ich mein Modul gemacht: modules/firebase.js

import firebase from 'firebase'; 
var firebaseConfig = { 
    apiKey: "some-api-key", 
    authDomain: "some-app.firebaseapp.com", 
    databaseURL: "https://some-app.firebaseio.com", 
    storageBucket: "some-app.appspot.com", 
}; 

var FbApp = firebase.initializeApp(firebaseConfig); 
module.exports = FbApp.database(); //this doesnt have to be database only 

Und dann an anderer Stelle in Ihrer Anwendung Sie einfach:

import Firebase from '/your/module/location' 
var messagesRef = Firebase.ref("messages/"); 

Oder

var Firebase = require('/your/module/location'); 
var messagesRef = Firebase.ref("messages/"); 
+0

sogar diese Methode angewendet, immer noch den gleichen Fehler @lommaj – Ezeewei

5

Sie können überprüfen, ob die App bereits geladen ist, da sie einmal geladen werden sollte. Eine Möglichkeit ist:

if (!firebase.apps.length) { 
    firebase.initializeApp({}); 
} 
+0

Nur einsame Lösung in meinem Fall. Ich danke dir sehr!!! – Adry