【发布时间】:2018-08-18 01:32:13
【问题描述】:
我创建了一个服务文件来管理我的 firebase 用户身份验证。但是,我在 auth.service.ts 文件中找到了导入错误。以下是导入后的错误和 ts 文件中的代码。
错误:
src/app/core/auth.service.ts(2,10) 中的错误:错误 TS2305:模块“C:/Users/Zakariah Siyaji/Desktop/or-api/node_modules/angularfire2/index”有没有导出的成员 'AngularFireAuth'。 src/app/core/auth.service.ts(2,27): error TS2305: Module '"C:/Users/Zakariah Siyaji/Desktop/or-api/node_modules/angularfire2/index"' 没有导出成员 'AngularFireDatabase '。 src/app/core/auth.service.ts(2,48): error TS2305: Module '"C:/Users/Zakariah Siyaji/Desktop/or-api/node_modules/angularfire2/index"' 没有导出成员 'FirebaseAuthState '。 src/app/core/auth.service.ts(2,67): error TS2305: Module '"C:/Users/Zakariah Siyaji/Desktop/or-api/node_modules/angularfire2/index"' 没有导出成员 'AuthProviders '。 src/app/core/auth.service.ts(2,82): error TS2305: Module '"C:/Users/Zakariah Siyaji/Desktop/or-api/node_modules/angularfire2/index"' 没有导出成员 'AuthMethods '。 src/app/core/auth.service.ts(2,95): error TS2305: Module '"C:/Users/Zakariah Siyaji/Desktop/or-api/node_modules/angularfire2/index"' 没有导出成员 'AngularFire '。
i 「wdm」:编译失败。
进口:
从“angularfire2”导入{ AngularFireAuth, AngularFireDatabase, FirebaseAuthState, AuthProviders, AuthMethods, AngularFire };
angularfire2 也在 package.json 文件夹中,版本号为:“^5.0.0-rc.11”
代码:
import { Injectable } from '@angular/core';
import { AngularFireAuth, AngularFireDatabase, FirebaseAuthState, AuthProviders, AuthMethods, AngularFire } from "angularfire2";
import { Router } from "@angular/router";
@Injectable({
providedIn: 'root'
})
export class AuthService {
authState: FirebaseAuthState = null;
constructor(private af: AngularFire, private db: AngularFireDatabase, private router: Router) {
af.auth.subscribe((auth) => {
this.authState = auth;
});
}
//Return true if user is logged in
get authenticated(): boolean {
return this.authState !== null;
}
//Returns current user
get currentUser(): any {
return this.authenticated ? this.authState.auth : null;
}
//Returns current user UID
get currentUserId(): string {
return this.authenticated ? this.authState.uid : '';
}
// Anonymous User
get currentUserAnonymous(): boolean {
return this.authenticated ? this.authState.Anonymous : false
}
//Returns current user display name or guest
get currentUserDisplayName(): string {
if (!this.authenticated) { return 'GUEST' }
else if (this.currentUserAnonymous) { return 'ANONYMOUS'}
else { return this.authState.auth.displayName || 'OAUTH USER'}
}
//login through a Gmail account
googleLogin(): Promise<FirebaseAuthState> {
return this.socialSignIn(AuthProviders.Google);
}
private socialSignIn(provider: number): Promise<FirebaseAuthState> {
return this.af.auth.login({provider, method: AuthMethods.popup})
.then(() => this.updateUserData() )
.catch(error => console.log(error));
}
private updateUserData(): void {
//Writes user name and email to realtime db
//useful if your app displays information about users or for admin features
let path = `users/${this.currentUserId}`; //Endpoint on Firebase
let data = { name: this.currentUser.displayName, email: this.currentUser.email, }
this.db.object(path).update(data)
.catch(error => console.log(error));
}
}
【问题讨论】:
-
我会试着找出答案。但它与 ES5 配置和节点有关。尝试将节点添加到您的 tsconfig.spec.json 类型数组。
-
尝试这样做。
npm install firebase angularfire2@next --save -
以下是我的 tsconfig.spec.json 代码: { "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/规范”,“模块”:“commonjs”,“类型”:[“茉莉花”,“节点”]},“文件”:[“test.ts”,“polyfills.ts”],“包含”:[“ */.spec.ts", "*/.d.ts" ] }
-
@ninjadev1030 我尝试了你发布的命令,但我得到了一堆 npm 错误
标签: node.js angular typescript firebase firebase-authentication