gpt4 book ai didi

javascript - 未捕获( promise ): FirebaseError

转载 作者:行者123 更新时间:2023-12-05 00:28:38 25 4
gpt4 key购买 nike

我收到以下错误。我的问题是 不是 有实际错误,但事实上它是说错误是 未捕获 .如果你看看我的auth.service.tssign-in.component.ts文件我发现了错误。
我的问题是,为什么在控制台中出现 Error: Uncaught (in promise) 错误?我错过了什么?
我在用着"@angular/fire": "^7.0.4""firebase": "^9.0.2""rxjs": "6.6.7" enter image description here
身份验证服务.ts

    /**
* Sign in
*
* @param credentials
*/
signIn(credentials: { email: string; password: string }): Promise<any>
{
return this.auth.signInWithEmailAndPassword(credentials.email, credentials.password)
.then((userCredential) => {

// Signed in
const user = userCredential.user;
//console.log(user);

// Store the access token in the local storage
userCredential.user.getIdToken().then(token => {
this.accessToken = token;
//console.log(token);
})

// Set the authenticated flag to true
this._authenticated = true;

// Store the user on the user service
//this._userService.user = user;

// ...
})
.catch((error) => {
const errorCode = error.code;
const errorMessage = error.message;
console.log('Show Error', error.code);
throw errorCode;
});
}
登录.component.ts
    /**
* Sign in
*/
signIn(): void
{
// Return if the form is invalid
if ( this.signInForm.invalid )
{
return;
}

// Disable the form
this.signInForm.disable();

// Hide the alert
this.showAlert = false;

// Sign in
this._authService.signIn(this.signInForm.value)
.then(
() => {

// Set the redirect url.
// The '/signed-in-redirect' is a dummy url to catch the request and redirect the user
// to the correct page after a successful sign in. This way, that url can be set via
// routing file and we don't have to touch here.
const redirectURL = this._activatedRoute.snapshot.queryParamMap.get('redirectURL') || '/signed-in-redirect';

// Navigate to the redirect url
this._router.navigateByUrl(redirectURL);

},
(response) => {

console.log('error from auth.service', response);

// Re-enable the form
this.signInForm.enable();

// Reset the form
this.signInNgForm.resetForm();

// Set the alert
this.alert = {
type : 'error',
message: 'Wrong email or password'
};

// Show the alert
this.showAlert = true;
}
);
}

最佳答案

首先,我的母语不是英语,所以如果我写得像个傻瓜,你知道为什么。
尝试这个:
_authService.service.ts

    import { getAuth, signInWithEmailAndPassword, Auth, inMemoryPersistence, browserLocalPersistence } from '@angular/fire/auth';


constructor(private _fireAuth: Auth,) {

/**
* Sign-in
*
* @param credentials
* @param rememberMe
*/
async signIn(credentials: { email: string; password: string }, rememberMe: boolean): Promise<any> {
// firebase Persistence.LOCAL browserLocalPersistence
// firebase Persistence.SESSION browserSessionPersistence
// firebase Persistence.NONE inMemoryPersistence

return new Promise(async (resolve, reject) => {
//Initialize auth()
const auth = getAuth();

// Extra function
if (rememberMe) {
await getAuth().setPersistence(browserLocalPersistence).catch(error => reject(-1));
} else {
await getAuth().setPersistence(inMemoryPersistence).catch(error => reject(-1));
}

signInWithEmailAndPassword(auth, credentials.email, credentials.password).then(async (userCredential) => {
// Signed in
const user = userCredential.user;
console.log(user);

// Store the access token in the local storage
await userCredential.user.getIdTokenResult().then(token => {
this.accessToken = token.token;
console.log(token);
})

// Set the authenticated flag to true
this._authenticated = true;
}).catch(error => reject(error.code));
});
}
注:正如你所看到的,我添加了一些额外的功能,如果你不感兴趣,你可以删除它们(setPersistence),这允许你考虑用户的选择,如果他想保持登录,或者在他关闭时删除他的登录选项卡。
登录.component.ts
alert = {
userNotFound : false,
wrongPassword: false,
unknownError : false,
};
/**
* Sign in
*/
signIn(): void
{
// Return if the form is invalid
if ( this.signInForm.invalid )
{
return;
}

// Disable the form
this.signInForm.disable();

// Hide the alert
this.showAlert = false;

// Sign in
this._authService.signIn(this.signInForm.value)
.then(
() => {

// Set the redirect url.
// The '/signed-in-redirect' is a dummy url to catch the request and redirect the user
// to the correct page after a successful sign in. This way, that url can be set via
// routing file and we don't have to touch here.
const redirectURL = this._activatedRoute.snapshot.queryParamMap.get('redirectURL') || '/signed-in-redirect';

// Navigate to the redirect url
this._router.navigateByUrl(redirectURL);

},
(response) => {

console.log('error from auth.service', response);

// Re-enable the form
this.signInForm.enable();

// Reset the form
this.signInNgForm.resetForm();

// Set the alert
if (error === - 1) {
this.alert.unknownError = true;
} else if (error === 'auth/email-not-found' || error === 'auth/user-not-found') {
this.alert.userNotFound = true;
} else if (error === 'auth/wrong-password') {
this.alert.wrongPassword = true;
}
}
);
}

关于javascript - 未捕获( promise ): FirebaseError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69270802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com