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