名为“”的Firebase应用已经存在,并且Google的Firebase参考在服务器上不起作用

我遵循https://firebase.google.com/docs/database/server/retrieve-data#section-start中服务器configuration的所有步骤,但是当我尝试在浏览器中创build参考时告诉我应用程序称为[默认]已经存在。 那时如果preiono F5告诉我有“databaseUrl”,我必须确保在启动应用程序的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; 

我创build了其他授权,其他密钥等,但没有任何工作。 谢谢。

节点-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 Ou (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) 

这里是我为这个问题写的一个答案

这是我遇到的一个问题,以及升级到新版本的Firebase。 您可能需要初始化两个独立的Firebase应用程序,但我只是想在我的应用程序的两个不同位置使用参考,而且我得到了相同的错误。

你需要为这种情况做的是为你的应用程序创build一个firebase模块,只需要初始化一次firebase,然后在你的应用程序的其他地方导入或者需要。

您应该从Firebase控制台复制整个configuration对象,并将其粘贴到API密钥和所有内容中。

下面是我创build模块的一个例子: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 

然后在你的应用程序的其他地方,你只需

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

要么

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

你可以检查应用程序是否已经加载,因为它应该加载一次。 一种方法是:

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

你应该只执行firebase.initializeApp每个应用程序,在你的router.get顺便说一句,你的出口看起来怪异/错误…如果它是一个模块,你为什么直接调用router.get? 只要你需要你的模块,它会被执行。 你为什么出口路由器?