admin管理员组文章数量:1128285
I have a firebase database linked up to two apps, one being an iOS app and another being a web app coded in node.js which is a basic algorithm that sets data to the database. When ever i am running the algorithm i am confronted with-
Error: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp(). at Error (native) at R (/Users/dd/Desktop/Code/NODE/node_modules/firebase/app-node.js:22:335) at a (/Users/dd/Desktop/Code/NODE/node_modules/firebase/app-node.js:20:68) at Object.c [as database] (/Users/dd/Desktop/Code/NODE/node_modules/firebase/app-node.js:21:447) at Object. (/Users/dd/Desktop/Code/NODE/Bot.js:24:25) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.runMain (module.js:604:10) at run (bootstrap_node.js:394:7) at startup (bootstrap_node.js:149:9) at bootstrap_node.js:509:3 dd-mac:NODE dd$
Could someone please help?
I have a firebase database linked up to two apps, one being an iOS app and another being a web app coded in node.js which is a basic algorithm that sets data to the database. When ever i am running the algorithm i am confronted with-
Error: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp(). at Error (native) at R (/Users/dd/Desktop/Code/NODE/node_modules/firebase/app-node.js:22:335) at a (/Users/dd/Desktop/Code/NODE/node_modules/firebase/app-node.js:20:68) at Object.c [as database] (/Users/dd/Desktop/Code/NODE/node_modules/firebase/app-node.js:21:447) at Object. (/Users/dd/Desktop/Code/NODE/Bot.js:24:25) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.runMain (module.js:604:10) at run (bootstrap_node.js:394:7) at startup (bootstrap_node.js:149:9) at bootstrap_node.js:509:3 dd-mac:NODE dd$
Could someone please help?
Share Improve this question asked Nov 12, 2016 at 13:07 Samuel AubinSamuel Aubin 1,8832 gold badges11 silver badges6 bronze badges 027 Answers
Reset to default 117You are probably invoking firebase
before the app is initialized. All calls to firebase
must come after .initializeApp();
firebase.initializeApp(config);
var db = firebase.firestore();
If you are using angular here is a solution.
Complete tutorial source link
Use initializeApp before @NgModule
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { environment } from 'src/environments/environment';
import { AuthenticateService } from './services/authentication.service';
import { AngularFireAuthModule } from '@angular/fire/auth';
import * as firebase from 'firebase';
firebase.initializeApp(environment.firebase);
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
AngularFireAuthModule
],
providers: [
StatusBar,
SplashScreen,
AuthenticateService,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
],
bootstrap: [AppComponent]
})
export class AppModule {}
If you are using React Native, this error can also happen if you did not configure the native side properly.
Documentation here: https://rnfirebase.io/
Android
First, download the google-services.json
file and place it inside of your project at the following location: /android/app/google-services.json
.
Then, add the google-services plugin as a dependency inside of your /android/build.gradle
buildscript {
dependencies {
// ... other dependencies
classpath 'com.google.gms:google-services:4.3.10'
// Add me --- /\
}
}
Lastly, execute the plugin by adding the following to your /android/app/build.gradle
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services' // <- Add this line
iOS
First, Add your GoogleService-Info.plist
file to the project through xcode. Make sure it shows up in build phases so you know it's added to the project and not just the folder.
Then, open your /ios/{projectName}/AppDelegate.m
file, and add the following:
At the top of the file, import the Firebase SDK:
#import <Firebase.h>
Within your existing didFinishLaunchingWithOptions method, add the following to the top of the method:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Add me --- \/
[FIRApp configure];
// Add me --- /\
// ...
}
If you using Dart and Flutter
- add firebase_core dependency to pubspac.ymal.
- go to main.dart
- import 'package:firebase_core/firebase_core.dart';
4.add async in main()
follow my code
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
var fsconnect = FirebaseFirestore.instance;
myget() async {
var d = await fsconnect.collection("students").get();
// print(d.docs[0].data());
for (var i in d.docs) {
print(i.data());
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Firebase Firestore App'),
),
body: Column(
children: <Widget>[
RaisedButton(
child: Text('send data'),
onPressed: () {
fsconnect.collection("students").add({
'name': 'sarah',
'title': 'xyz',
'email': '[email protected]',
});
print("send ..");
},
),
RaisedButton(
child: Text('get data'),
onPressed: () {
myget();
print("get data ...");
},
)
],
),
));
}
}
I had a similar issue following Firebase's online guide found here.
The section heading "Initialize multiple apps" is misleading as the first example under this heading actually demonstrates how to initialize a single, default app. Here's said example:
// Initialize the default app
var defaultApp = admin.initializeApp(defaultAppConfig);
console.log(defaultApp.name); // "[DEFAULT]"
// Retrieve services via the defaultApp variable...
var defaultAuth = defaultApp.auth();
var defaultDatabase = defaultApp.database();
// ... or use the equivalent shorthand notation
defaultAuth = admin.auth();
defaultDatabase = admin.database();
If you are migrating from the previous 2.x SDK you will have to update the way you access the database as shown above, or you will get the, No Firebase App '[DEFAULT]'
error.
Google has better documentation at the following:
INITIALIZE: https://firebase.google.com/docs/database/admin/start
SAVE: https://firebase.google.com/docs/database/admin/save-data
RETRIEVE: https://firebase.google.com/docs/database/admin/retrieve-data
My problem was because I added a second parameter:
AngularFireModule.initializeApp(firebaseConfig, 'reservas')
if I remove the second parameter it works fine:
AngularFireModule.initializeApp(firebaseConfig)
This may not be best answer but, I had to initialize app with admin and firebase like below. I use admin for it's own purposes and firebase as well.
const firebase = require("firebase");
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
firebase.initializeApp(functions.config().firebase);
// Get the Auth service for the default app
var authService = firebase.auth();
function createUserWithEmailAndPassword(request, response) {
const email = request.query.email;
const password = request.query.password;
if (!email) {
response.send("query.email is required.");
return;
}
if (!password) {
response.send("query.password is required.");
return;
}
return authService.createUserWithEmailAndPassword(email, password)
.then(success => {
let responseJson = JSON.stringify(success);
console.log("createUserWithEmailAndPassword.responseJson", responseJson);
response.send(responseJson);
})
.catch(error => {
let errorJson = JSON.stringify(error);
console.log("createUserWithEmailAndPassword.errorJson", errorJson);
response.send(errorJson);
});
}
Flutter web
For me the error occurred when I run my application in "release" mode
flutter run -d chrome --release
and when I deployed the application on the Firebase hosting
firebase deploy
Solution
Since I initialized Firebase in the index.html, I had to change the implementation order of firebase and main.dart.js
<script>
var firebaseConfig = {
apiKey: "xxxxxxxxxxxxxxxxxxxxxx",
authDomain: "xxxxxxxxxxx.firebaseapp.com",
databaseURL: "https://xxxxxxxxxx.firebaseio.com",
projectId: "xxxxxxxxxxx",
storageBucket: "xxxxxxxx.appspot.com",
messagingSenderId: "xxxxxxxxxxx",
appId: "1:xxxxxxxxxx:web:xxxxxxxxxxxxx",
measurementId: "G-xxxxxxxxx"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
firebase.analytics();
</script>
//moved below firebase init
<script src="main.dart.js" type="application/javascript"></script>
If you are on react native and developing for IOS then I think you forgot the linking steps of firebase module.
follow the below steps..!
open your /ios/{projectName}/AppDelegate.m
file, and add the following:
At the top of the file, import the Firebase SDK:
#import <Firebase.h>
Within your existing didFinishLaunchingWithOptions
method, add the following to the top of the method:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Add this --- \/
if ([FIRApp defaultApp] == nil) {
[FIRApp configure];
}
// Add me --- /\
// ...
}
The answer may already be given somewhere but here is my take to this error which may be thrown for multiple reasons:
- Default app is initialized after the other one. Correct way is to initialize the default app first and then the rest.
firebase.apps.app()
is being called before default app initialization. This code is basically returning the default app instance. Since it is not present, hence the error.- Lastly, you are initializing other firebase services like auth, database, firestore, etc before app is initialized.
If you are starting out a react-native app and seeing this issue, then you have to follow all the instructions listed in firebase (when you setup iOS/android app) or the instructions @ React-native google auth android DEVELOPER_ERROR Code 10 question
Got the same error while working with iOS. Hope you have already installed the Firebase using pods. You need to do the following. Open the Xcode and open AppDelegate.m file and import
#import "FIRApp.h"
Now call configure method in didFinishLaunchingWithOptions delegate method
[FIRApp configure];
Now run your app. It should work. Here is doc link
in my case i was using
getAuth()
getFirestore()
with out passing the app instead use it like
const app = initializeApp(config);
const auth = getAuth(app);
const db = getFirestore(app);
YOU CALL THIS IN JADE: firebase.initializeApp(config); IN THE BEGIN OF THE FUNC
script.
function signInWithGoogle() {
firebase.initializeApp(config);
var googleAuthProvider = new firebase.auth.GoogleAuthProvider
firebase.auth().signInWithPopup(googleAuthProvider)
.then(function (data){
console.log(data)
})
.catch(function(error){
console.log(error)
})
}
This error is because you are trying to use firebase function before it has successfully initialised
Fix:
Place the function you want to call inside setInterval block such that the function is called only once the app has been initialised:
let isFirebaseAppDefined = false;
setInterval(() => {
if (!isFirebaseAppDefined) {
if (firebase.app()) {
// Function that needs to run after the initialisation comes here
// Example re-captcha verifier or other auth function
isFirebaseAppDefined = true;
}
}
}, 100);
another solution is here.
use APP_INITIALIZER
https://angular.io/api/core/APP_INITIALIZER
export function appInitializer() {
return () => firebase.initializeApp(firebaseConfig);
}
...
@NgModule({
...
providers: [{
provide: APP_INITIALIZER,
useFactory: () => appInitializer
multi: true
}]
})
export class AppModule {}
I got this error in ios when I updated the React Native version, add this instruction in method: didFinishLaunchingWithOptions
from file: ios/{AppName}/AppDelegate.m
if ([FIRApp defaultApp] == nil) {
[FIRApp configure];
}
It should look like this:
I had the same issue. When I tried adding my flutter web app to firebase I took the Script tags google gave me in the setup process and pasted them into my index.html. That didn't work for me even AFTER I modified my main.dart with the following lines in the main method:
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
Using the Script in the format posted here I got it working: https://firebase.flutter.dev/docs/installation/web
If there are other people having the same issue and blindly copying the Script Tags Google gives you in the Firebase Setup.... this helped me. Just get it into the format posted by FlutterFire.
Step 1:
Using npm
npm install --save @react-native-firebase/app
Using Yarn
yarn add @react-native-firebase/app
step 2: Generating Android credentials in https://console.firebase.google.com/ The "Android package name" must match your local project's package name which can be found inside of the manifest tag within the /android/app/src/main/AndroidManifest.xml file within your project.
Download the google-services.json file and place it inside of your project at the following location: /android/app/google-services.json.
step3: and then add the google-services plugin as a dependency inside of your /android/build.gradle file: classpath 'com.google.gms:google-services:4.3.13'
Lastly, execute the plugin by adding the following to your /android/app/build.gradle file: apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' // <- Add this line
That's all....
Using react js
My problem was I had put the firebase folder in my main project folder instead of the /src folder.
Once I moved the folder it worked perfectly
I am using ionic with angular, in my case were imports from getAuth and updateProfile, the route names are different by versions
Managed to fix this error with a newly created react app by adding
import firebase from "./firebase";
as the first import in App.js to fix the error.
import firebase from "./firebase";
import { getAuth} from "firebase/auth";
function App() {
const auth = getAuth();
return (
<div className="App">
<p>HW </p>
</div>
);
}
export default App;
The firebase initialisation code is in firebase.js in the same directory as App.js.
My problem in AngularFire 7.0 was incorrect imports in app.module.ts
import { getDatabase } from 'firebase/database';
should be
import { getDatabase } from '@angular/fire/database';
// imports should be from '@angular/fire/...'
import { initializeApp, provideFirebaseApp } from '@angular/fire/app';
import { getAuth, provideAuth } from '@angular/fire/auth';
import { getDatabase, provideDatabase } from '@angular/fire/database';
// wrong imports from 'firebase/...'
import { getDatabase } from 'firebase/database'; // wrong
import { getAuth } from 'firebase/auth'; // wrong
AngularFireModule.initializeApp(environment.firebase),
AngularFireAuthModule,
AngularFireAuthGuardModule,
provideFirebaseApp(() => initializeApp(environment.firebase)),
provideAuth(() => getAuth()),
provideDatabase(() => getDatabase()),
In my case, I didn't put
apply plugin: 'com.google.gms.google-services'
Statment in the App level gradle file
For you guys using Vue or Nuxt, separate the listener and put the initialization codes inside the onBeforeMount
hook.
const requestNotificationPermission = async () => {
console.log('Requesting notification permission...')
const permission = await Notification.requestPermission()
if (permission === 'granted') {
console.log('Notification permission granted.')
}
}
const initFcm = async () => {
await requestNotificationPermission()
const app = await initializeApp(config.public.firebase)
const messaging = getMessaging(app)
try {
const vapidKey = config.public.firebase.vapidKey
let currentToken: Nullish<string>
currentToken = await getToken(messaging, { vapidKey })
if (!currentToken) {
console.log(
'No registration token available. Request permission to generate one.',
)
} else {
await $fetch('/api/auth/profile', {
method: 'PATCH',
body: { fcm_token: currentToken },
})
}
} catch (error) {
console.error('An error occurred while retrieving token. ', error)
}
}
const notifications = ref<NotificationPayload[]>([])
onBeforeMount(() => initFcm())
onMounted(() => {
const messaging = getMessaging()
onMessage(messaging, (payload: NotificationPayload) => {
notifications.value.unshift(payload)
toast.add({
title: payload.notification.title,
description: payload.notification.body,
click: () => {
notifications.value = notifications.value.filter(
(n) => n.messageId !== payload.messageId,
)
},
})
})
})
Using Vue 3 I got this message after I added this import to my first .vue file that gets loaded.
import { getAuth, signInWithEmailAndPassword } from "firebase/auth";
In my project I have a firebase.js file that loads firebase for my application...
import firebase from 'firebase/compat/app'
import 'firebase/compat/firestore'
import 'firebase/compat/auth'
const firebaseConfig = {
// enter your own configs here
};
const firebaseApp = firebase.initializeApp(firebaseConfig)
const db = firebaseApp.firestore()
const userCollection = db.collection('users')
export const createUser = user => {
return userCollection.add(user)
}
export const getUser = async id => {
const user = await userCollection.doc(id).get();
return user.exists ? user.data() : null
}
export const updateUser = (id, user) => {
return userCollection.doc(id).update(user)
}
export const deleteUser = id => {
return userCollection.doc(id).delete()
}
To resolve this issue I added
import './firebase';
within my main.js file (see below). This ensures the firebase application is loaded within our Vue application before we try using the firebase import within the .vue files.
// Plugins
import { registerPlugins } from '@/plugins'
// Components
import App from './App.vue';
import router from './router';
import './firebase';
// Composables
import { createApp } from 'vue'
const app = createApp(App)
app.use(router)
registerPlugins(app)
app.mount('#app')
I think This Error is Arrived Because of You are using Class Component in Respective React Platform that Doesn't get Proper Configuration. So You Write Configuration in componentWillMount().
componetWillMount() {
const config = {
apiKey: “xxxxxxxxxxxxxxxxxxxxxxxx”,
authDomain: “auth-bdcdc.firebaseapp.com 20”,
databaseURL: “https://auth-bdcdc.firebaseio.com 7”,
projectId: “auth-bdcdc”,
storageBucket: “auth-bdcdc.appspot.com 2”,
messagingSenderId: “xxxxxxxxxx”
};
版权声明:本文标题:javascript - Error: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() - Stack Ove 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736715690a1949184.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论