NativeScript Firebase уже инициализирована

#nativescript #angular2-nativescript #nativescript-plugin #nativescript-firebase

#nativescript #angular2-nativescript #nativescript-плагин #nativescript-firebase

Вопрос:

Я использую Firebase в своем приложении, и я заметил, что когда я активно вношу изменения и LiveSync обновляет приложение, иногда появляется сообщение «ошибка firebase.init: Firebase уже инициализирована». Это происходит, когда изменения не запускают перезапуск всего приложения (например, HTML-файла). Это полностью портит мое текущее состояние аутентификации и заставляет меня перезапускать приложение в любом случае.

Есть ли какой-нибудь способ, которым я могу это отследить или предотвратить? Я могу попытаться создать для него демонстрационное приложение, но я чувствую, что это могло с кем-то уже случиться.

Я просто использую стандартный firebase.init, как показано в документации в моем app.component, ничего особенного или отличающегося.

Комментарии:

1. github.com/EddyVerbruggen/nativescript-plugin-firebase/issues/…

Ответ №1:

Вместо использования в ngOnit App.component попробуйте инициализировать firebase при событии запуска приложения.

 applicationOn(launchEvent, (args: LaunchEventData) => {
    firebase.init({
   // Optionally pass in properties for database, authentication and cloud messaging,
  // see their respective docs.
  }).then(
function () {
  console.log("firebase.init done");
},
function (error) {
  console.log("firebase.init error: "   error);
}
 );
});
  

Комментарии:

1. Поскольку я должен запустить этот код в main.ts, у меня нет доступа к своим сервисам, потому что приложение не запустилось, которое обрабатывает вход пользователя в систему и выход из нее.

2. Я смог добиться этого, используя отдельный onAuthStateChanged в app.component firebase.addAuthStateListener(listener) и проверив, имеет ли firebase.initialized значение true, тогда я вручную получаю текущего пользователя с помощью firebase.getCurrentUser(). Обходной путь, но он работает.