update instalar angular firebase firebase-storage angularfire2

instalar - firebase storage angular 6



Accediendo a firebase.storage() con AngularFire2(Angular2 rc.5) (2)

El código anterior ya no funciona, sigo recibiendo ''firebase.storage no es una función'', intente agregar el siguiente código:

import * as firebase from ''firebase/app''; import ''firebase/storage'';


Estoy intentando acceder a firebase.storage () en mi proyecto, con:

  • "@angular": "2.0.0-rc.5"
  • "angularfire2": "^ 2.0.0-beta.3-pre2"
  • "base de fuego": "^ 3.3.0"

Encontré esta solution y creé mi archivo .component.ts con:

import { Component } from ''@angular/core''; declare var firebase : any; @Component({ template: ''<img [src]="image">'' }) export class RecipesComponent { image: string; constructor() { const storageRef = firebase.storage().ref().child(''images/image.png''); storageRef.getDownloadURL().then(url => this.image = url); } }

y me sale el siguiente error en la consola del navegador:

EXCEPTION: Error: Uncaught (in promise): EXCEPTION: Error in ./bstorageComponent class FBStorageComponent_Host - inline template:0:0 ORIGINAL EXCEPTION: Error: No Firebase App ''[DEFAULT]'' has been created - call Firebase App.initializeApp(). ORIGINAL STACKTRACE: Error: No Firebase App ''[DEFAULT]'' has been created - call Firebase App.initializeApp().

pero, inicialicé firebase en app.module.ts con esta importación

AngularFireModule.initializeApp(firebaseConfig)

No estoy recibiendo lo que me falta. ¿Cómo puedo acceder al almacenamiento utilizando Firebase? No tengo problemas para acceder a la base de datos con angularfire2.
Gracias


Internamente, AngularFire2 llama a initializeApp de Firebase en una fábrica de DI cuando crea su FirebaseApp .

Está viendo el error porque está accediendo a la instancia global de firebase y aún no se ha llamado initializeApp , ya que la infraestructura DI no ha sido necesaria para crear FirebaseApp o cualquiera de sus dependencias.

En lugar de utilizar la base de firebase global, puede inyectar FirebaseApp (que es el valor devuelto por la función initializeApp de Firebase):

import { Component, Inject } from ''@angular/core''; import { FirebaseApp } from ''angularfire2''; @Component({ template: ''<img [src]="image">'' }) export class RecipesComponent { image: string; constructor(@Inject(FirebaseApp) firebaseApp: any) { const storageRef = firebaseApp.storage().ref().child(''images/image.png''); storageRef.getDownloadURL().then(url => this.image = url); } }

Y, como ya no es necesario, puede eliminar declare var firebase : any; .

Las primeras versiones del módulo Firebase NPM no incluían tipificaciones. Las versiones recientes ahora los incluyen, por lo que la propiedad firebaseApp podría escribirse de esta manera:

import { Component, Inject } from ''@angular/core''; import { FirebaseApp } from ''angularfire2''; import * as firebase from ''firebase''; @Component({ template: ''<img [src]="image">'' }) export class RecipesComponent { image: string; constructor(@Inject(FirebaseApp) firebaseApp: firebase.app.App) { const storageRef = firebaseApp.storage().ref().child(''images/image.png''); storageRef.getDownloadURL().then(url => this.image = url); } }

Con la refactorización que acompaña a la versión 4 candidata a lanzamiento de AngularFire2, FirebaseApp ya no es un token, por lo que la inyección se puede simplificar:

import { Component, Inject } from ''@angular/core''; import { FirebaseApp } from ''angularfire2''; import ''firebase/storage''; @Component({ template: ''<img [src]="image">'' }) export class RecipesComponent { image: string; constructor(firebaseApp: FirebaseApp) { const storageRef = firebaseApp.storage().ref().child(''images/image.png''); storageRef.getDownloadURL().then(url => this.image = url); } }

Sin embargo, se requiere una importación explícita de firebase/storage porque AngularFire2 ahora solo importa las partes de la API de Firebase que usa. (Tenga en cuenta que hay una propuesta de soporte de almacenamiento ).