React TypeScript/Firebase -属性 '_tokenResponse' 在类型 'UserCredential' 上不存在
React TypeScript/Firebase -Property '_tokenResponse' does not exist on type 'UserCredential'
我是打字稿的新手,我正在尝试将我的反应项目转换为打字稿。
我正在通过 firebase 创建用户,但它给了我这个错误 属性 '_tokenResponse' does not exist on type 'UserCredential'. 我该如何解决这个问题?
createUserWithEmailAndPassword(auth,values.email,values.password)
.then((userCredential) => {
console.log(userCredential);
setSubmitting(false);
authContext.logIn(userCredential._tokenResponse.idToken);
navigate('/');
}).catch((err)=>{
setError(err.message);
})
authContext 的完整代码
import React, {useState} from 'react';
const AuthContext=React.createContext({
token:'',
isLoggedIn:false,
logIn:(token:string)=>{},
logOut:()=>{},
});
export const AuthContextProvider:React.FC=(props)=>{
const initialToken=localStorage.getItem('token')??'';
const [token,setToken]=useState(initialToken);
const userIsLoggedIn=!!token;
//console.log(userIsLoggedIn);
const loginHandler=(token:string)=>{
// console.log(token);
setToken(token);
localStorage.setItem('token',token);
}
const logoutHandler=()=>{
setToken('');
localStorage.removeItem('token');
}
const contextValue={
token:token,
isLoggedIn:userIsLoggedIn,
logIn:loginHandler,
logOut:logoutHandler
};
return(
<AuthContext.Provider value={contextValue}>
{props.children}
</AuthContext.Provider>
)
}
export const useAuth=()=>{
const context = React.useContext(AuthContext)
if (context === undefined) {
throw new Error('useAuth must be used within a AuthContextProvider')
}
return context
}
export default AuthContext;```
UserCredential 似乎没有 uid(_tokenResponse) 属性。我最好的猜测是您正在寻找 user.user.uid.
const user = userCredential.user;
使用 Firebase JavaScript SDK 时,您不需要自己处理令牌,它们由 SDK 本身在后台处理。
如您所见
https://firebase.google.com/docs/reference/js/v8/firebase.auth.Auth#createuserwithemailand
On successful creation of the user account, this user will also be signed in to your application
要在您关闭页面时让您的用户保持登录状态,请在此处查看持久性部分
还有这里
所以基本上,不要尝试读取应该受到保护的令牌。
我是打字稿的新手,我正在尝试将我的反应项目转换为打字稿。 我正在通过 firebase 创建用户,但它给了我这个错误 属性 '_tokenResponse' does not exist on type 'UserCredential'. 我该如何解决这个问题?
createUserWithEmailAndPassword(auth,values.email,values.password)
.then((userCredential) => {
console.log(userCredential);
setSubmitting(false);
authContext.logIn(userCredential._tokenResponse.idToken);
navigate('/');
}).catch((err)=>{
setError(err.message);
})
authContext 的完整代码
import React, {useState} from 'react';
const AuthContext=React.createContext({
token:'',
isLoggedIn:false,
logIn:(token:string)=>{},
logOut:()=>{},
});
export const AuthContextProvider:React.FC=(props)=>{
const initialToken=localStorage.getItem('token')??'';
const [token,setToken]=useState(initialToken);
const userIsLoggedIn=!!token;
//console.log(userIsLoggedIn);
const loginHandler=(token:string)=>{
// console.log(token);
setToken(token);
localStorage.setItem('token',token);
}
const logoutHandler=()=>{
setToken('');
localStorage.removeItem('token');
}
const contextValue={
token:token,
isLoggedIn:userIsLoggedIn,
logIn:loginHandler,
logOut:logoutHandler
};
return(
<AuthContext.Provider value={contextValue}>
{props.children}
</AuthContext.Provider>
)
}
export const useAuth=()=>{
const context = React.useContext(AuthContext)
if (context === undefined) {
throw new Error('useAuth must be used within a AuthContextProvider')
}
return context
}
export default AuthContext;```
UserCredential 似乎没有 uid(_tokenResponse) 属性。我最好的猜测是您正在寻找 user.user.uid.
const user = userCredential.user;
使用 Firebase JavaScript SDK 时,您不需要自己处理令牌,它们由 SDK 本身在后台处理。
如您所见
https://firebase.google.com/docs/reference/js/v8/firebase.auth.Auth#createuserwithemailand
On successful creation of the user account, this user will also be signed in to your application
要在您关闭页面时让您的用户保持登录状态,请在此处查看持久性部分
还有这里
所以基本上,不要尝试读取应该受到保护的令牌。