Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:Firebase:没有Firebase应用程序';[默认]';已经创建了_Firebase_React Native - Fatal编程技术网

错误:Firebase:没有Firebase应用程序';[默认]';已经创建了

错误:Firebase:没有Firebase应用程序';[默认]';已经创建了,firebase,react-native,Firebase,React Native,我有一个React原生应用程序,它使用Firebase实现各种功能。这是完美的工作了两个星期,直到我得到下面的错误。我在App.js中没有做任何更改,所以不知道为什么会出现这个问题 [默认]:Firebase:未创建Firebase应用程序“[默认]”-调用Firebase应用程序。initializeApp()(应用程序/无应用程序) 这是我的配置代码,放在我的App.js中: const firebaseConfig = { apiKey: '<api-key>',

我有一个React原生应用程序,它使用Firebase实现各种功能。这是完美的工作了两个星期,直到我得到下面的错误。我在
App.js
中没有做任何更改,所以不知道为什么会出现这个问题

[默认]:Firebase:未创建Firebase应用程序“[默认]”-调用Firebase应用程序。initializeApp()(应用程序/无应用程序)

这是我的配置代码,放在我的
App.js
中:

const firebaseConfig = {
    apiKey: '<api-key>',
    authDomain: '<app-name>.firebaseapp.com',
    databaseURL: 'https://<app-name>.firebaseio.com',
    projectId: '<project-id>',
    storageBucket: '<app-name>.appspot.com',
    messagingSenderId: '<messaging-sender-id>',
    appId: '<app-id>'
};
firebase.initializeApp(firebaseConfig);
这是我的
console.log(firebase.app())

更新 您的
组件安装了所有配置设置,可能会运行多次,而这会导致您出现问题,我做了以下更改,工作非常顺利:

我在根目录上创建了一个
firebase.js
,在
App.js
旁边,文件如下所示

import `firebase/app`
require(`firebase/auth`)

const firebaseConfig = {
    apiKey: '<api-key>',
    authDomain: '<app-name>.firebaseapp.com',
    databaseURL: 'https://<app-name>.firebaseio.com',
    projectId: '<project-id>',
    storageBucket: '<app-name>.appspot.com',
    messagingSenderId: '<messaging-sender-id>',
    appId: '<app-id>'
};
if (!firebase.apps.length) {
   firebase.initializeApp(firebaseConfig);
}

export auth = firebase.auth()
export default firebase
您不应该在渲染方法上运行auth,因为它可能会运行很多次。

更新 您的
组件安装了所有配置设置,可能会运行多次,而这会导致您出现问题,我做了以下更改,工作非常顺利:

我在根目录上创建了一个
firebase.js
,在
App.js
旁边,文件如下所示

import `firebase/app`
require(`firebase/auth`)

const firebaseConfig = {
    apiKey: '<api-key>',
    authDomain: '<app-name>.firebaseapp.com',
    databaseURL: 'https://<app-name>.firebaseio.com',
    projectId: '<project-id>',
    storageBucket: '<app-name>.appspot.com',
    messagingSenderId: '<messaging-sender-id>',
    appId: '<app-id>'
};
if (!firebase.apps.length) {
   firebase.initializeApp(firebaseConfig);
}

export auth = firebase.auth()
export default firebase
您不应该在渲染方法上运行auth,因为它可能会运行很多次。

在react native应用程序中,您不必从javascript端配置firebase。
例如,在IOS端,在AppDelegate.m中添加以下行以手动初始化firebase

在文件顶部,导入Firebase模块:

#import <Firebase.h>

在react native应用程序中,您不必从javascript端配置firebase。
例如,在IOS端,在AppDelegate.m中添加以下行以手动初始化firebase

在文件顶部,导入Firebase模块:

#import <Firebase.h>

我曾经在几乎所有的firebase项目中都遇到过同样的问题,但解决您的问题很容易。如我所见,您正在尝试检查一个经过身份验证的用户。问题是该方法是异步的,并且您实现它的方式不正确。您要做的是使用firebase.onAuthstateChanged方法,并将其放置在firebase初始化区域之后,如下所示:

import React, { Component } from 'react';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import reducers from './reducers';
import ReduxThunk from 'redux-thunk';
import Router from './Router';
import { auth } from './firebase' // <----

class App extends Component {
    componentDidMount () {
       this.checkAuth()
    }
    checkAuth = () {
       auth.onAuthStateChanged(function(user, err) {
          console.log(user);
            if (user) {
              console.log(user);
               Actions.signUpVerify();
            } else {
                console.log(err);
            }
      });
    }

    render() {
        const store = createStore(reducers, {}, applyMiddleware(ReduxThunk));
        return (
            <Provider store={store}>
                <Router />
            </Provider>
        )
    }
}

export default App;

firebase.initializeApp({
  apiKey: '<api-key>',
  authDomain: '***',
  databaseURL: '***',
  projectId: '***',
  storageBucket: '***',
  messagingSenderId: '***',
  appId: '***',
  measurementId: 'G-HSYR9HXZF6',
});
// Enabling Offline Capability
firebase.firestore().settings({
  cacheSizeBytes: firebase.firestore.CACHE_SIZE_UNLIMITED,
});
firebase.firestore().enablePersistence();
// Listen to when a user logs in or logs out
firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    const userDetails = {
      id: user.uid,
      name: user.displayName,
      email: user.email,
      provider: user.providerData[0].providerId,
    };
    console.log(userDetails)
  } else {
    console.log('No User Found')
  }
});
firebase.initializeApp({
apiKey:“”,
authDomain:“***”,
数据库URL:“***”,
projectId:“***”,
storageBucket:“***”,
messagingSenderId:“***”,
appId:“***”,
测量结果:“G-HSYR9HXZF6”,
});
//启用脱机功能
firebase.firestore()设置({
cacheSizeBytes:firebase.firestore.CACHE\u SIZE\u UNLIMITED,
});
firebase.firestore().enablePersistence();
//当用户登录或注销时收听
firebase.auth().onAuthStateChanged((用户)=>{
如果(用户){
const userDetails={
id:user.uid,
名称:user.displayName,
电子邮件:user.email,
提供程序:用户.providerData[0]。providerId,
};
console.log(userDetails)
}否则{
console.log('未找到用户')
}
});

我过去在几乎所有的firebase项目中都遇到过同样的问题,但解决您的问题很容易。如我所见,您正在尝试检查一个经过身份验证的用户。问题是该方法是异步的,并且您实现它的方式不正确。您要做的是使用firebase.onAuthstateChanged方法,并将其放置在firebase初始化区域之后,如下所示:

import React, { Component } from 'react';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import reducers from './reducers';
import ReduxThunk from 'redux-thunk';
import Router from './Router';
import { auth } from './firebase' // <----

class App extends Component {
    componentDidMount () {
       this.checkAuth()
    }
    checkAuth = () {
       auth.onAuthStateChanged(function(user, err) {
          console.log(user);
            if (user) {
              console.log(user);
               Actions.signUpVerify();
            } else {
                console.log(err);
            }
      });
    }

    render() {
        const store = createStore(reducers, {}, applyMiddleware(ReduxThunk));
        return (
            <Provider store={store}>
                <Router />
            </Provider>
        )
    }
}

export default App;

firebase.initializeApp({
  apiKey: '<api-key>',
  authDomain: '***',
  databaseURL: '***',
  projectId: '***',
  storageBucket: '***',
  messagingSenderId: '***',
  appId: '***',
  measurementId: 'G-HSYR9HXZF6',
});
// Enabling Offline Capability
firebase.firestore().settings({
  cacheSizeBytes: firebase.firestore.CACHE_SIZE_UNLIMITED,
});
firebase.firestore().enablePersistence();
// Listen to when a user logs in or logs out
firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    const userDetails = {
      id: user.uid,
      name: user.displayName,
      email: user.email,
      provider: user.providerData[0].providerId,
    };
    console.log(userDetails)
  } else {
    console.log('No User Found')
  }
});
firebase.initializeApp({
apiKey:“”,
authDomain:“***”,
数据库URL:“***”,
projectId:“***”,
storageBucket:“***”,
messagingSenderId:“***”,
appId:“***”,
测量结果:“G-HSYR9HXZF6”,
});
//启用脱机功能
firebase.firestore()设置({
cacheSizeBytes:firebase.firestore.CACHE\u SIZE\u UNLIMITED,
});
firebase.firestore().enablePersistence();
//当用户登录或注销时收听
firebase.auth().onAuthStateChanged((用户)=>{
如果(用户){
const userDetails={
id:user.uid,
名称:user.displayName,
电子邮件:user.email,
提供程序:用户.providerData[0]。providerId,
};
console.log(userDetails)
}否则{
console.log('未找到用户')
}
});

如果您仍然为这个
错误而烦恼:Firebase:没有创建Firebase应用程序“[默认]”
,因为初始化应用程序的默认名称是“
”[默认]”
尝试指定它是什么应用程序,
。initializeApp
重载了1到2个参数,为了克服这个错误,我为您提供了一个完美的示例

//firebase.js
常量配置={…}
firebase.initializeApp(配置'YouAppName');
//loading.js
firebase.app('YouAppName').auth().onAuthStateChange(用户=>{
导航。导航(用户?'Home':'Login')
})

欢迎:)

如果您仍然为这个
错误而烦恼:Firebase:没有创建Firebase应用程序“[默认]”
,因为初始化应用程序的默认名称是
“[默认]”
请尝试指定它是什么应用程序,
。initializeApp
重载了1到2个参数,以克服此错误,我有很好的例子给你

//firebase.js
常量配置={…}
firebase.initializeApp(配置'YouAppName');
//loading.js
firebase.app('YouAppName').auth().onAuthStateChange(用户=>{
导航。导航(用户?'Home':'Login')
})

欢迎:)

最合乎逻辑的解释是,此代码要么没有运行,要么在引发错误的调用之后运行。您可能需要设置一个断点或添加一些日志来查看它是哪一个。@FrankvanPuffelen此代码块所在的函数是
componentDidMount
。我在
componentDidMount
中进行了此配置之后,做了一个
console.log
,它就运行了。@FrankvanPuffelen很奇怪的是,在我的一个组件中,如果我注释掉与firebase相关的代码,这个错误就会发生