Использование Typescript / Angular 6 / Firebase / webpack для базового CRUD дает Как исправить 'TypeError: "конструкторы классов должны вызываться с | new |" - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь выполнить базовую операцию CRUD в firebase через Angular 6 и Typescript.Я использую Webpack, чтобы связать это.Когда приложение запускается, никаких ошибок не выдается, но в тот момент, когда я пытаюсь сохранить в базе данных реального времени firebase, я сталкиваюсь с «Как исправить» TypeError: конструкторы класса должны вызываться с | new | "".

Я впервые работаю с firebase и angularfire2.Ссылаясь на реализацию CRUD в официальной документации Angularfire2, я не вижу существенной разницы с тем, что я сделал.Я также пытался переключить браузеры с Mozilla на Chrome, но проблема, похоже, не связана с браузером.Интересно, это как-то связано с rxjs, но я уже запустил $npm install rxjs-compat Это тоже не исправило!

user.service.ts


import { AngularFireDatabase, FirebaseObjectObservable} from 'angularfire2/database';
import { Injectable } from '@angular/core';
import * as firebase from 'firebase';
import { AppUser } from './models/app-user';


@Injectable({
  providedIn: 'root'
})
export class UserService {

  constructor(private db: AngularFireDatabase) {}

  save(user: firebase.User) {
    this.db.object('/users/' + user.uid).update({
      name: user.displayName,
      email: user.email
    })
    .catch(error => console.log(error));
  }

  get(uid:string): FirebaseObjectObservable<AppUser>{
    return this.db.object('/users/' + uid);
  }
}

app.component.ts


import { UserService } from './user.service';
import { Router } from '@angular/router';
import { AuthService } from './auth.service';
import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  constructor(private userService: UserService, private auth: AuthService, router: Router){
    auth.user$.subscribe(user => {
      if (user) {
        userService.save(user);
        let returnUrl = localStorage.getItem('returnUrl');
        router.navigateByUrl(returnUrl);
      }
    });

  }
}

Ожидаемый результат: функция сохранения (пользовательская) для обновления информации в базе данных реального времени firebase и последующего перенаправления на предыдущую страницу.

Фактический результат: при входе в систему, вы перенаправлены обратно на страницу входа в систему, обновление базы данных отсутствует, и выдается следующая ошибка:

enter image description here

...