Firebase / Ionic: тип 'UserCredential' не может быть назначен типу 'User'. Свойство 'delete' отсутствует в типе 'UserCredential' - PullRequest
0 голосов
/ 30 августа 2018

Недавно я только начал изучать Ionic и Firebase и следую учебнику по Pluralsight «Аутентификация пользователей с помощью Playbase Service Authentication Service Playbook». Я сталкиваюсь с ошибкой, которая, по-моему, может быть устаревшей версией Ionic или Firebase, но после Google я все еще не знаю, как решить эту проблему.

AuthProvider

import { Injectable } from '@angular/core';
import firebase from 'firebase';
import {User} from '@firebase/auth-types';

@Injectable()
export class AuthProvider {

  constructor() {

  }

  async signUpUser(email: string, password: string, firstName: string, lastName: string): Promise<any> {
    try {
      const newUser:User = await firebase
          .auth()
          .createUserWithEmailAndPassword(email, password);

      await firebase
          .database()
          .ref(`/userProfile/${newUser.uid}`)
          .set({email:email, firstName:firstName, lastName:lastName});
        return newUser;
    } catch (error){
      throw error;
    }
  }
}

Ошибка «Тип» UserCredential не может быть назначена типу «Пользователь». Свойство 'delete' отсутствует в типе 'UserCredential'. "

1 Ответ

0 голосов
/ 01 сентября 2018

Это похоже на проблему из-за проблемы обратной совместимости с вашим оператором импорта

import {User} from '@firebase/auth-types';

Решение 1)

а) Измените вашу запись "firebase" внутри package.json: «пожарная база»: «4.10.0»

б) Удалить папку node_modules

с) запустите npm install.

Решение 2)

  signUpUser(
    email: string,
    password: string,
    firstName: string,
    lastName: string
  ) {
    firebase
      .auth()
      .createUserWithEmailAndPassword(email, password)
      .then(function(userRecord) {
        firebase
          .database()
          .ref(`/userProfile/${userRecord.uid}`)
          .set({ email: email, firstName: firstName, lastName: lastName });
        return userRecord;
      })
      .catch(function(error) {
        throw error;
      });
  }
...