TypeError: _app.default.auth 不是一个函数 - React Native Web - Firebase
Posted
技术标签:
【中文标题】TypeError: _app.default.auth 不是一个函数 - React Native Web - Firebase【英文标题】:TypeError: _app.default.auth is not a function - React Native Web - Firebase 【发布时间】:2022-01-19 17:51:54 【问题描述】:我目前正在 React Native Web 上开发一个项目,这是我在组件中的登录调用。 (调用在组件useEffect中,组件一打开,就应该匿名登录)
import firebase from 'firebase/compat/app'
import 'firebase/compat/auth'
const firebaseConfig =
apiKey: "****",
authDomain: "****",
projectId: "****",
storageBucket: "****",
messagingSenderId: "****",
appId: "****",
measurementId: "****"
;
firebase.initializeApp(firebaseConfig)
const login = async () =>
firebase.auth().signInAnonymously()
.then((userCredential) =>
// Signed in
// ...
)
.catch((error) =>
console.log("LOG: "+error)
);
但每次我得到错误:未捕获(承诺)类型错误:_app.default.auth 不是函数
我尝试了几种不同的导入方式,但似乎都不起作用。 当我在 Firefox 上打开控制台时,我看到了错误。我该如何解决这个问题?
谢谢
【问题讨论】:
你在useEffect中有firebase初始化函数吗?我认为这可能是因为在初始化 firebase 之前调用了 auth() 函数。 不幸的是,它不起作用,我都尝试了:在 useEffect 中初始化,在 useEffect 之外,与登录调用相同的 useEffect,只是一切 【参考方案1】:通过检查 firebase 是否已初始化且用户未登录来尝试此方法:
const [loggedIn, setLoggedIn] = React.useState(false)
React.useEffect(() =>
if (!firebase.apps.length)
firebase.initializeApp(
apiKey: "****",
authDomain: "****",
projectId: "****",
storageBucket: "****",
messagingSenderId: "****",
appId: "****",
measurementId: "****"
);
, [])
React.useEffect(() =>
if (firebase.apps.length && !loggedIn)
setLoggedIn(true)
login()
, [firebase])
const login = async () =>
firebase.auth().signInAnonymously()
.then((userCredential) =>
// Signed in
// ...
)
.catch((error) =>
console.log("LOG: " + error)
);
【讨论】:
很遗憾,还是同样的错误以上是关于TypeError: _app.default.auth 不是一个函数 - React Native Web - Firebase的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:“__ensemble__”对象不可调用
TypeError: __init__() 得到了一个意外的关键字参数“评分”
TypeError: __init__() 接受 2 个位置参数,但给出了 4 个
TypeError: __init__() 接受 1 个位置参数,但给出了 3 个