AngularFireMessaging - ошибка this._next не является функцией - PullRequest
1 голос
/ 21 апреля 2020

В моем приложении angular я хотел добавить несколько уведомлений web-pu sh с помощью firebase.

import { Component } from "@angular/core";
import { AngularFireMessaging } from "@angular/fire/messaging";
import { mergeMapTo } from "rxjs/operators";


@Component({
  selector: "app-home",
  templateUrl: "home.page.html",
  styleUrls: ["home.page.scss"],
})
export class HomePage {
  constructor(private afMessaging: AngularFireMessaging) {}

  requestPermission() {
    this.afMessaging.requestPermission
      .pipe(mergeMapTo(this.afMessaging.tokenChanges))
      .subscribe(
        (token) => {
          console.log("Permission granted! Save to the server!", token);

          this.afMessaging.messages.subscribe(
            (message) => {
              console.log(message);
            },
            (error) => {
              console.log("error", error);
            }
          );
        },
        (error) => {
          console.error(error);
        }
      );


  }
}

Я могу получить токен, а в консоли разработчика в разделе «Приложения» находятся запросы уведомлений, когда я отправляю тестовое сообщение через Firebase.

Но в моей консоли я получаю эту ошибку:

zone-evergreen.js:659 Unhandled Promise rejection: this._next is not a function ; Zone: <root> ; Task: ServiceWorkerContainer.addEventListener:message ; Value: TypeError: this._next is not a function
    at WindowController.next [as onMessageCallback] (Subscriber.js:49)
    at WindowController.<anonymous> (index.esm.js:1067)
    at step (tslib.es6.js:100)
    at Object.next (tslib.es6.js:81)
    at tslib.es6.js:74
    at new ZoneAwarePromise (zone-evergreen.js:960)
    at __awaiter (tslib.es6.js:70)
    at WindowController.push../node_modules/@firebase/messaging/dist/index.esm.js.WindowController.messageEventListener (index.esm.js:1056)
    at ServiceWorkerContainer.<anonymous> (index.esm.js:890)
    at ZoneDelegate.invokeTask (zone-evergreen.js:399) TypeError: this._next is not a function

Я использую Angular 9 и angular / fire и firebase.

1 Ответ

0 голосов
/ 30 апреля 2020

Похоже, что это проблемы с ядром библиотеки, и есть две возможности избежать ошибки:

  1. От stackoverflow.com / a / 60557818/7927724 i пытался go с этими версиями и все работает нормально. Вы можете попробовать это сейчас, пока не обнаружите проблему с актуальными версиями
  2. Вы можете попробовать этот обходной путь:
this.afMessaging.messaging.subscribe(
    (_messaging: any) => {
        messaging._next = (payload: any) = > {
            console.log(payload);
        };
    }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...