Ошибка после того, как инициализировали firebase async/await

Я стараюсь инициализировать firebade посредством json, возвращенного из-за axios для этого я осуществлен асинхронные функции с async/await.

Это мой код:

async function init() {
  try {
    var _app = await axios.post('/app');
    var config = _app.data;
    if (!firebase.apps.length) {
      firebase.initializeApp(config);
    }
  } catch (e) {
    Sentry.captureException(e);
  }
  return {
    storage: function() {
      return firebase.storage();
    },
    database: function() {
      return firebase.firestore();
    }
  };
}
var app = init();
export default app;

Но я появляются эти ошибки в момент выполнения кода

app.storage () is not в function

app.database () is not в function

Нужно подчеркивать, что это модуль, который я экспортирую с webpack для Веб среды

1
задан 23.12.2019, 05:27
2 ответа

Одна funciГіn async всегда возвращает обещание. У

async function init() {
  return {
    saludar: function() {}
  };
}
var app = init();
console.log({
  'Es promesa?': app instanceof Promise,
  'De qué tipo es app.saludar?': typeof app.saludar
});

И этого обещания нет свойств объекта, с которым resolverГЎ. Чтобы соглашаться в Г©ste ты должен манипулировать ею resoluciГіn в компоненте, что usarГЎ firebase invocГЎndola с await

let firebaseAdmin=await firebaseFactory;

или с

Promise.resolve(firebaseFactory).then(firebaseAdmin=>{...})

Например:

import app from './firebase_factory.js';

class Componente {

   constructor() {
      this.firebaseFactory = app;
   }
   async storeImage(name, image) {
      let firebaseAdmin = await this.firebaseFactory,
      uploadRef = firebaseAdmin.storage().ref().child(name),
      return uploadRef.put(image) <--- esto no me acuerdo si retorna una promesa
   }
}
1
ответ дан 23.12.2019, 22:06

Доказательство следующей формы, возможно, что он решает твою проблему:

export default async function init() {
    try {
      var _app = await axios.post('/app');
      var config = _app.data;
      if (!firebase.apps.length) {
        firebase.initializeApp(config);
      }
    } catch (e) {
      Sentry.captureException(e);
    }
    return {
      storage: function() {
        return firebase.storage();
       },
      database: function() {
        return firebase.firestore();
      }
    };
}

В файле, где хотелось выполнять, просто importarГ - в следующего способа:

import app from '../../ruta-archivo'; // Opción 1
const app = require('/../../ruta-archivo'); // Opción 2

app.init() // para ejecutar la función
0
ответ дан 23.12.2019, 22:06
  • 1
    echo уже habí в попробованный, таким образом, даже закончите тем, что создайте класс в javascript для этого, но мне продолжает давать та же ошибка или говорит мне, что я должен инициализировать firebase с app.initializeApp – Rimuru Tempest 23.12.2019, 09:25

Теги

Похожие вопросы