Итак, сейчас я пишу систему входа в систему с angular и firestore, вот мой код:
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import * as firebase from 'firebase/app';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFirestore, AngularFirestoreDocument } from 'angularfire2/firestore';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/switchMap';
interface User {
uid: string;
email: string;
photoURL?: string;
displayName?: string;
favouriteColor?: string;
}
@Injectable()
export class AuthService {
user: Observable<User>;
constructor(private afAuth: AngularFireAuth,
private afs: AngularFirestore,
private router: Router) {
this.user = this.afAuth.authState
.switchMap(user => {
if(user) {
return this.afs.doc<User>(`users/${user.uid}`).valueChanges()
} else {
return Observable.of(null)
}
})
}
}
googleLogin(){
const provider = new firebase.auth.GoogleAuthProvider()
return this.oAuthLogin(provider);
}
private oAuthLogin(provider){
return this.afAuth.auth.signInWithPopup(provider)
.then((credential) => {
this.updateUserData(credential.user)
})
}
private updateUserData(user){
const userRef: AngularFirestoreDocument<User> = this.afs.doc(`users/${user.id}`)
const data: User = {
uid: user.uid,
email: user.email,
displayName: user.displayName,
photoURL: user.photoURL
}
return userRef.set(data)
}
Тем не менее, мой журнал консоли сообщает мне, что я скучаю по точкам с запятой, не совсем уверен, почему:
ERROR in src/app/core/auth.service.ts(40,14): error TS1005: ';' expected.
src/app/core/auth.service.ts(46,1): error TS1128: Declaration or statement expected.
src/app/core/auth.service.ts(46,29): error TS1005: ';' expected.
src/app/core/auth.service.ts(53,1): error TS1128: Declaration or statement expected.
src/app/core/auth.service.ts(53,29): error TS1005: ';' expected.
, а также:
ERROR in ./src/app/core/auth.service.ts
Module parse failed: 'return' outside of function (48:4)
You may need an appropriate loader to handle this file type.
| {
| var provider = new firebase.auth.GoogleAuthProvider();
| return this.oAuthLogin(provider);
| }
| oAuthLogin(provider);
Я, очевидно, понятия не имею, что машинопись хочет сказать мне. Например, в первой ошибке машинопись говорит, что мне нужно добавить точку с запятой в строке 40, но строка 40 - это сама функция googleLogin () {}, поэтому я не совсем уверен, что здесь происходит.
Если кто-нибудь сможет найти ошибку / ошибку, я был бы признателен. Сидел на этом более часа и просто не могу найти, что именно не так.
Заранее спасибо.