2016-06-01 3 views
6

Я выполнил все шаги для конфигурации сервера в https://firebase.google.com/docs/database/server/retrieve-data#section-start, но когда я попытаюсь создать ссылку в браузере, мне сообщается, что приложение по умолчанию [default] уже существует. В то время, если preiono F5 сообщает мне, что есть «databaseUrl», я должен обязательно предоставить эти данные при запуске приложения firebase.Приложение Firebase с именем '[DEFAULT]' уже существует и ссылка на google firebase не работает на сервере

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; 

Я создал другие разрешения, другие ключи и т. Д. Но ничего не работает. Спасибо.

Node -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

Можете ли вы также упомянуть версию SDK firebase, которую вы используете? Это v2.x или v3.x? – praneybehl

+0

Глядя на него снова, на странице «https://xxxxxyyyyyzzzzz.firebaseio.com/» используется ваше имя базы данных или идентификатор вашего проекта? с v3.x Я думаю, вам нужно использовать свой идентификатор проекта. Например, вы можете найти свой идентификатор проекта в новой консоли Firebase. Когда вы переходите к базе данных в консоли firebase, проверьте URL-адрес «https://console.firebase.google.com/project/ /database/data». Надеюсь, поможет. – praneybehl

+0

Привет, спасибо за вашу помощь, факт в том, что я использую версию ** 3.x ** и использую идентификатор проекта (** project_id **). Я разместил сообщение, появившееся после нажатия клавиши F5 –

ответ

0

Вы должны выполнить firebase.initializeApp только один раз за приложение, за пределами router.get Кстати, ваш экспорт выглядеть странно/неправильно ... если это модуль, почему вы вызываете router.get напрямую? Как только вам понадобится ваш модуль, он будет выполнен. Почему вы экспортируете маршрутизатор?

4

here is an answer I wrote for this question

Это вопрос, который я столкнулся, а также обновление до новой версии Firebase. Возможно, вы захотите, чтобы два отдельных приложения firebase были инициализированы, но я просто хотел использовать refs в двух разных местах в своем приложении, и я получал ту же ошибку.

Что вам нужно сделать для этой ситуации - создать модуль firebase для вашего приложения, который только инициализирует firebase один раз, затем вы импортируете или требуете его в другом месте вашего приложения.

Вы должны скопировать весь объект конфигурации из консоли firebase и вставить его здесь с помощью ключа API и всего.

Вот пример того, как я сделал мой модуль: модули/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 

А потом в другом месте в вашем приложении вы просто:

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

Или

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

даже применяли этот метод, все еще имеют ту же ошибку @lommaj – Ezeewei

5

Вы можете проверить, загружено ли приложение, поскольку оно должно быть загружено один раз. Один из способов:

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

Только одинокое решение в моем случае. Огромное спасибо!!! – Adry

Смежные вопросы