Firebase数据库URL-配置Firebase

Firebase数据库URL-配置Firebase,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我正在尝试将Firebase与我的react应用程序一起使用 我有一个配置如下的文件: import * as firebase from 'firebase'; const config = { apiKey: process.env.FIREBASE_API_KEY, authDomain: process.env.FIREBASE_AUTH_DOMAIN, databaseURL: process.env.FIREBASE_DB_URL, projectId: proce

我正在尝试将Firebase与我的react应用程序一起使用

我有一个配置如下的文件:

import * as firebase from 'firebase';

const config = {
  apiKey: process.env.FIREBASE_API_KEY,
  authDomain: process.env.FIREBASE_AUTH_DOMAIN,
  databaseURL: process.env.FIREBASE_DB_URL,
  projectId: process.env.FIREBASE_PROJECT_ID,
  storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.FIREBASE_MESSAGE_ID,
}

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

const database = firebase.database();
const auth = firebase.auth()

export {firebase, auth, database };
当我尝试此操作时,会出现一个错误,显示:

FIREBASE致命错误:无法确定FIREBASE数据库URL。调用firebase.initializeApp()时,请确保包含databaseURL选项

我无法理解此错误,因为我在初始化应用程序的调用中包含了配置。配置包括数据库URL


如何初始化数据库?

围绕
firebase.initializeApp(config)的
if
语句不需要该
if

您不需要导出这些对象,一旦初始化应用程序,它就可以在项目中使用,而无需导出

  const database = firebase.database();
  const auth = firebase.auth()

  export {firebase, auth, database };

在FiasBaseJS中,当我删除DavaStudioL:和Prime.Env.FixBaseDabaseE.URL之间的空白时,它工作了。p>

const config = {
  apiKey: process.env.FIREBASE_API_KEY,
  authDomain: process.env.FIREBASE_AUTH_DOMAIN,
  databaseURL:process.env.FIREBASE_DATABASE_URL,
  projectId: process.env.FIREBASE_PROJECT_ID,
  storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID
};

不要多次初始化firebase

这里也有同样的问题。 上下文:Gatsby-Gatsby-node.js

出于某种原因,它不像我的环境数据库url。需要对该值进行硬编码

    const config = {
      apiKey: process.env.GATSBY_FIREBASE_API_KEY,
      authDomain: process.env.GATSBY_FIREBASE_AUTH_DOMAIN,
      databaseURL: "https://blabla.firebaseio.com",
      projectId: process.env.GATSBY_FIREBASE_PROJECT_ID,
      storageBucket: process.env.GATSBY_FIREBASE_STORAGE_BUCKET,
      messagingSenderId: process.env.GATSBY_FIREBASE_MESSAGING_SENDER_ID
    }
它成功了


cya在这里遇到了相同的问题,但在将firebaseconfig放入
componentDidMount()
后,问题将得到解决

componentDidMount(){

const firebaseConfig = {
  apiKey: process.env.FIREBASE_API_KEY,
  authDomain: process.env.FIREBASE_AUTH_DOMAIN,
  databaseURL:process.env.FIREBASE_DATABASE_URL,
  projectId: process.env.FIREBASE_PROJECT_ID,
  storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID
};
firebase.initializeApp(firebaseConfig);
const myitem = firebase.database().ref('items/').once('value',snapshot=>{
  console.log(snapshot.val())
})

}

重新启动开发服务器可以解决问题,如果您刚刚编写了代码并试图编译它,则会抛出此错误。因此,您可以尝试退出批处理作业,然后再次重新启动服务器。

我还收到了与firebase相关的未捕获错误。最后,错误应该得到解决。
实际上,当我们使用环境变量时,它们不应该传入bundle.js文件,这是一个客户端javascript文件。我们可以使用“DefinePlugin”,这是一个网页插件,应该手动将这些环境变量传入bundle.js文件。

看起来您的代码很好。只需打印并检查
process.env.FIREBASE\u DATABASE\u URL
,它与FIREBASE控制台中提到的完全相同。(如果您使用的是create react app,请不要忘记将
react\u app
添加到所有环境变量中。)


将完成工作。

我认为这是复制粘贴错误:)

在.env文件中 反应\应用\数据库\ URL

但是我用 process.env.REACT_APP_DB

请检查一下,它工作正常

import firebase from 'firebase/app'
import 'firebase/database';
const config = {
    apiKey: process.env.REACT_APP_APIKEY,
    authDomain: process.env.REACT_APP_AUTHDOMAIN,
    databaseURL: process.env.REACT_APP_DATABASE_URL,
    projectId: process.env.REACT_APP_PID,
    storageBucket: process.env.REACT_APP_SB,
    messagingSenderId: process.env.REACT_APP_SID,
    appId: process.env.REACT_APP_APPID,
    measurementId: process.env.REACT_APP_MID
};


firebase.initializeApp(config);
const database = firebase.database();

export { database };
export default firebase;

我只是粘贴硬代码配置,它为我工作

const config = {
  apiKey: "AIzaSyBA2C8S7****************-gCw",
  authDomain: "e**********-2aa4c.firebaseapp.com",
  databaseURL: "https://************.firebaseio.com",
  projectId: "ea********2aa4c",
  storageBucket: "ea************2aa4c.appspot.com",
  messagingSenderId: "1765********26",
}

这怎么可能是一个解决方案呢?
componentDidMount
与此有什么关系?天哪,这正是我的问题,我真的为此自责。谢谢你,伙计!你现在知道原因了吗?:)虽然这是一种解决方法,但如果知道为什么访问此环境变量的值不起作用,那就太好了。
import firebase from 'firebase/app'
import 'firebase/database';
const config = {
    apiKey: process.env.REACT_APP_APIKEY,
    authDomain: process.env.REACT_APP_AUTHDOMAIN,
    databaseURL: process.env.REACT_APP_DATABASE_URL,
    projectId: process.env.REACT_APP_PID,
    storageBucket: process.env.REACT_APP_SB,
    messagingSenderId: process.env.REACT_APP_SID,
    appId: process.env.REACT_APP_APPID,
    measurementId: process.env.REACT_APP_MID
};


firebase.initializeApp(config);
const database = firebase.database();

export { database };
export default firebase;
const config = {
  apiKey: "AIzaSyBA2C8S7****************-gCw",
  authDomain: "e**********-2aa4c.firebaseapp.com",
  databaseURL: "https://************.firebaseio.com",
  projectId: "ea********2aa4c",
  storageBucket: "ea************2aa4c.appspot.com",
  messagingSenderId: "1765********26",
}