- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的 Ionic Angular 项目上设置 Firebase。我正在使用链接教程 https://www.positronx.io/ionic-firebase-authentication-tutorial-with-examples/去做这个。
我不断收到 TS2570 错误:
Property 'sendEmailVerification' does not exist on type 'Promise'. Did you forget to use 'await'?
import { Injectable, NgZone } from '@angular/core';
import { auth } from 'firebase/app';
import { User } from "./user";
import { Router } from "@angular/router";
import { AngularFireAuth } from "@angular/fire/auth";
import { AngularFirestore, AngularFirestoreDocument } from '@angular/fire/firestore';
@Injectable({
providedIn: 'root'
})
export class AuthenticationService {
userData: any;
constructor(
public afStore: AngularFirestore,
public ngFireAuth: AngularFireAuth,
public router: Router,
public ngZone: NgZone
) {
this.ngFireAuth.authState.subscribe(user => {
if (user) {
this.userData = user;
localStorage.setItem('user', JSON.stringify(this.userData));
JSON.parse(localStorage.getItem('user'));
} else {
localStorage.setItem('user', null);
JSON.parse(localStorage.getItem('user'));
}
})
}
// Login in with email/password
SignIn(email, password) {
return this.ngFireAuth.signInWithEmailAndPassword(email, password)
}
// Register user with email/password
RegisterUser(email, password) {
return this.ngFireAuth.createUserWithEmailAndPassword(email, password)
}
// Email verification when new user register
SendVerificationMail() {
return this.ngFireAuth.currentUser.sendEmailVerification()
.then(() => {
this.router.navigate(['verify-email']);
})
}
// Recover password
PasswordRecover(passwordResetEmail) {
return this.ngFireAuth.sendPasswordResetEmail(passwordResetEmail)
.then(() => {
window.alert('Password reset email has been sent, please check your inbox.');
}).catch((error) => {
window.alert(error)
})
}
// Returns true when user is looged in
get isLoggedIn(): boolean {
const user = JSON.parse(localStorage.getItem('user'));
return (user !== null && user.emailVerified !== false) ? true : false;
}
// Returns true when user's email is verified
get isEmailVerified(): boolean {
const user = JSON.parse(localStorage.getItem('user'));
return (user.emailVerified !== false) ? true : false;
}
// Sign in with Gmail
GoogleAuth() {
return this.AuthLogin(new auth.GoogleAuthProvider());
}
// Auth providers
AuthLogin(provider) {
return this.ngFireAuth.signInWithPopup(provider)
.then((result) => {
this.ngZone.run(() => {
this.router.navigate(['dashboard']);
})
this.SetUserData(result.user);
}).catch((error) => {
window.alert(error)
})
}
// Store user in localStorage
SetUserData(user) {
const userRef: AngularFirestoreDocument<any> = this.afStore.doc(`users/${user.uid}`);
const userData: User = {
uid: user.uid,
email: user.email,
displayName: user.displayName,
photoURL: user.photoURL,
emailVerified: user.emailVerified
}
return userRef.set(userData, {
merge: true
})
}
// Sign-out
SignOut() {
return this.ngFireAuth.signOut().then(() => {
localStorage.removeItem('user');
this.router.navigate(['login']);
})
}
}
它被调用的唯一时间是在此处的注册页面中
signUp(email, password){
this.authService.RegisterUser(email.value, password.value)
.then((res) => {
// Do something here
this.authService.SendVerificationMail()
this.router.navigate(['verify-email']);
}).catch((error) => {
window.alert(error.message)
})
}
}
这些是项目中使用的依赖项:
"@angular/common": "~8.2.14",
"@angular/core": "~8.2.14",
"@angular/fire": "^6.0.0",
"@angular/forms": "~8.2.14",
"@angular/platform-browser": "~8.2.14",
"@angular/platform-browser-dynamic": "~8.2.14",
"@angular/router": "~8.2.14",
"@capacitor/cli": "^2.0.1",
"@capacitor/core": "^2.0.1",
"@capacitor/ios": "^2.0.1",
"@ionic-native/core": "^5.0.7",
"@ionic-native/splash-screen": "^5.0.0",
"@ionic-native/status-bar": "^5.0.0",
"@ionic/angular": "^5.0.0",
"core-js": "^2.5.4",
"firebase": "^7.14.0",
"rxjs": "~6.5.1",
"tslib": "^1.9.0",
"zone.js": "~0.9.1"
如果有人可以给我有关如何解决此问题的任何提示?我不是 100% 确定如何在不显示更多错误的情况下实现异步和等待函数。
最佳答案
新版本 AngularFire 6.0.0 发布,支持 Angular 9。它不向后兼容 与旧版本。它不再支持旧版本的 Angular (<9)。它还放弃了对旧版 Typescript(<3.6.4)、Firebase Javascript SDK (<7.13.1) 和 firebase-tools(<8.0.0) 的支持。
AngularFireAuth 的“auth”属性已被弃用,因此“currentUser”的用法也已更改。
'currentUser' 是解析当前用户的 promise 。属性“sendEmailVerification”不存在,但可以通过解析的用户轻松访问。
// Email verification when new user register
SendVerificationMail() {
return this.ngFireAuth.currentUser.then(u => u.sendEmailVerification())
.then(() => {
this.router.navigate(['verify-email']);
})
}
关于angular - 协助解决 TS2570 错误 : Property 'sendEmailVerification' does not exist on type 'Promise<User>' . 您是否忘记使用 'await' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61214731/
我正在尝试发送验证电子邮件以进行 Firebase 身份验证中的电子邮件密码身份验证。但在执行 user.sendEmailVerification() 我遇到了这个异常, No virtual me
当用户确认使用 sendEmailVerification 发送的电子邮件时,客户端(网络)是否有办法知道/收到通知? 这对于单页应用程序来说很重要,等待用户确认并完成身份验证后将状态更改为已登录。
尝试为 Firebase 设置 firebase_auth 包Flutter 中的电子邮件/密码身份验证方法,但需要电子邮件验证方面的帮助。 我遇到了 firebase_auth 包提供的 sendE
我正在尝试制作 firebase通过电子邮件创建用户并发送验证电子邮件。 它改变了我相信版本 5+ 我似乎无法让它发挥作用。 有人可以帮助解释我哪里出错了吗? 我不断收到以下错误消息是 TypeErr
Firebase 有没有办法在将用户添加到数据库之前验证用户的电子邮件?我的最终目标是创建一个注册表单,用户首先输入电子邮件地址,然后按下“验证电子邮件地址”按钮。此时将发送验证电子邮件,用户将点击内
我正在尝试发送电子邮件验证,然后将 data.uid 设置为 user.id,无论我将 promise 放在哪里,总是会出错。 这是我的代码 onCreate(form: NgForm) { var
有人尝试过 Firebase 3 与 angularfire 的新电子邮件验证功能吗?我无法在他们的 github 站点中看到任何有关其使用情况的文档 - https://github.com/fir
我正在关注 this blog post在用户注册后向他们发送电子邮件验证,这是我在执行 sendEmailVerification() 时遇到的问题 The method 'sendEmailVer
当用户注册时,我要求他们验证他们的电子邮件地址。 它在 Firefox 和 Chrome 中运行良好,但在 Safari 中则不然,我收到以下消息: 错误:发生网络错误(例如超时、连接中断或无法访问主
在 iOS/Swift 上,我在使用 sendEmailVerification(with:completion:) 时收到意外域错误.我已手动使用动态链接来设置关联域。 let actionCode
我正在开始一个新的 Android 项目,并决定在其中使用 Kotlin 和 Firebase,现在我可以使用 createUserWithEmailAndPassword val u
我正在尝试在调用 sendEmailVerification() 方法时将一个对象插入到 firebase 数据库中。 注意:我在创建新用户帐户后调用了 sendEmailVerification()
我正在尝试在我的 Ionic Angular 项目上设置 Firebase。我正在使用链接教程 https://www.positronx.io/ionic-firebase-authenticati
我是一名优秀的程序员,十分优秀!