J'ai souvent installé et utilisé AngularFire2 pour des projets, mais depuis la publication de la version 5, je ne peux pas le configurer correctement.
Ce sont les étapes que je suis pour atteindre le problème.
$ ionic start angularfire2test tabs
$ npm install angularfire2 firebase --save
package.json
"angularfire2": "^5.0.0-rc.3",
"firebase": "^4.5.2",
Ajoutez des informations d'identification Firebase à app.module.ts + importez le module par défaut et le module de base de données. C'est la partie la plus importante
import { AngularFireModule } from 'angularfire2';
import { AngularFireDatabaseModule } from 'angularfire2/database';
...
@NgModule({
declarations: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
AngularFireModule.initializeApp(firebaseCredentials),
AngularFireDatabaseModule
],
bootstrap: [IonicApp],
entryComponents: [
....
Lorsque j'exécute $ ionic serve
, le message d'erreur "Impossible de trouver le module" @ firebase/database sur WebpackMissingModule ( http: // localhost: 8100/build/vendor.js: 119190: 82 )
Lors de la vérification du dossier node_modules, @firebase ne possède pas de sous-dossier de base de données, mais le dossier firebase a un dossier de base de données.
Ai-je commis une erreur ou s'agit-il d'un problème général avec AngularFire2?
Je pense que cela a à voir avec un problème avec npm . Lorsque vous utilisez du fil pour installer les modules, tout fonctionne parfaitement.
yarn add angularfire2 firebase
tldr: Node: 8.4.0/npm: 5.2.0 a des problèmes, le travail du fil
Vous pouvez essayer avec:
$ rm -rf node_modules/
$ npm install
$ npm install angularfire2@latest --save
ou pour changer AngularFireDatabaseModule
par AngularFireDatabase
.
Je n'ai pas eu de chance en essayant de reproduire votre problème. Je suggérerais, si cela vous pose toujours problème, d’essayer ce qui suit:
$npm ls -g --depth=0
/Users/pbrack/.nvm/versions/node/v8.5.0/lib
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
$ ionic start angularfire2test blank
$ npm install angularfire2 firebase --save
{
"name": "angularfire-test",
"version": "0.0.1",
"author": "Ionic Framework",
"homepage": "http://ionicframework.com/",
"private": true,
"scripts": {
"clean": "ionic-app-scripts clean",
"build": "ionic-app-scripts build",
"lint": "ionic-app-scripts lint",
"ionic:build": "ionic-app-scripts build",
"ionic:serve": "ionic-app-scripts serve"
},
"dependencies": {
"@angular/common": "4.4.3",
"@angular/compiler": "4.4.3",
"@angular/compiler-cli": "4.4.3",
"@angular/core": "4.4.3",
"@angular/forms": "4.4.3",
"@angular/http": "4.4.3",
"@angular/platform-browser": "4.4.3",
"@angular/platform-browser-dynamic": "4.4.3",
"@ionic-native/core": "4.3.0",
"@ionic-native/splash-screen": "4.3.0",
"@ionic-native/status-bar": "4.3.0",
"@ionic/storage": "2.0.1",
"angularfire2": "^5.0.0-rc.3",
"firebase": "^4.6.0",
"ionic-angular": "3.7.1",
"ionicons": "3.0.0",
"rxjs": "5.4.3",
"sw-toolbox": "3.6.0",
"zone.js": "0.8.18"
},
"devDependencies": {
"@ionic/app-scripts": "3.0.0",
"TypeScript": "2.3.4"
},
"description": "An Ionic project"
}
import {BrowserModule} from '@angular/platform-browser';
import {ErrorHandler, NgModule} from '@angular/core';
import {IonicApp, IonicErrorHandler, IonicModule} from 'ionic-angular';
import {SplashScreen} from '@ionic-native/splash-screen';
import {StatusBar} from '@ionic-native/status-bar';
import {MyApp} from './app.component';
import {HomePage} from '../pages/home/home';
import {AngularFireModule} from 'angularfire2';
import {AngularFireDatabaseModule, AngularFireDatabase} from 'angularfire2/database';
import {AngularFireAuthModule} from 'angularfire2/auth';
export const firebaseConfig = {
apiKey: "xxxxxxxxxx",
authDomain: "your-domain-name.firebaseapp.com",
databaseURL: "https://your-domain-name.firebaseio.com",
storageBucket: "your-domain-name.appspot.com",
messagingSenderId: '<your-messaging-sender-id>'
};
@NgModule({
declarations: [
MyApp,
HomePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
AngularFireModule.initializeApp(firebaseConfig),
AngularFireDatabaseModule,
AngularFireAuthModule
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage
],
providers: [
StatusBar,
SplashScreen,
AngularFireDatabase,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {
}
import {Component} from '@angular/core';
import {AngularFireDatabase} from 'angularfire2/database';
import {Observable} from 'rxjs/Observable';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
items: Observable<any[]>;
constructor(afDB: AngularFireDatabase) {
this.items = afDB.list('cuisines').valueChanges();
}
}
1.Inside package.json, supprimez ^ de "firebase": "^ 4.8.1"
1.1 Rétrograder Firebase de 4.8.1 à 4.8.0 en remplaçant 4.8.1 par 4.8.0
1.2 Le résultat final devrait ressembler à ceci: "base de feu": "4.8.0"
Exécutez npm update dans la racine du projet. NPM va déclasser Firebase pour vous
Exécutez ng serve --open pour vérifier les erreurs de compilation. Il ne devrait pas y avoir de . Raison:
Firebase avait introduit quelques changements radicaux qu'AngularFire2 n'avait pas encore supportés. Jusqu'à ce que l'équipe AngularFire2 s'en occupe, ce sera la solution.
Ajoutez un emoji et dirigez tous ceux qui ont le même problème ici! Cela leur permettrait d'économiser beaucoup de temps!
Installez les dernières versions d'angularfire2 et [email protected]
npm install [email protected]
npm install angularfire2@latest
Il n'est plus nécessaire "--save", cela reste implicite