TypeError: util.getModularInstance(auth).onauthstatechange不是



我正在尝试在React Native中将Firebase SDK从8升级到9,遵循以下指南:https://firebase.google.com/docs/web/modular-upgrade

但是我一直遇到错误

TypeError: util.getModularInstance(身份验证)。onauthstatechange不是函数。

奇怪的是,当我切换回旧的版本8/版本9的Compat语法,同时保持版本9模块化导入(不含Compat),仅用于onAuthStateChanged函数时,它的工作原理。.

我正在使用Firebase 9.9.0 npm包。

任何帮助将非常感激!

Import语句:

import firebaseApp from './src/config/ConfigFirebase';
import { getAuth, onAuthStateChanged } from "firebase/auth";

Version 9模块语法:onAuthStateChanged (Free Function):

useEffect(() => {
async function checkUser() {
const auth = getAuth(firebaseApp);
onAuthStateChanged((auth, user) => {
if(user !== null) {
setIsLogged(true);
setLoaded(true);
} else {
setIsLogged(false);
setLoaded(true);
}
})
}
checkUser();
}, []);

产生的错误:

[Unhandled promise rejection: TypeError: util.getModularInstance(auth).onAuthStateChanged is not a function. (In 'util.getModularInstance(auth).onAuthStateChanged(nextOrObserver, error, completed)', 'util.getModularInstance(auth).onAuthStateChanged' is undefined)]
at node_modules@firebaseauthdistrnphone-51423d6b.js:5862:49 in tslib.__awaiter$argument_3
at App.js:105:6 in checkUser
at node_modulesregenerator-runtimeruntime.js:63:36 in tryCatch
at node_modulesregenerator-runtimeruntime.js:294:29 in invoke
at node_modulesregenerator-runtimeruntime.js:63:36 in tryCatch
at node_modulesregenerator-runtimeruntime.js:155:27 in invoke
at node_modulesregenerator-runtimeruntime.js:190:16 in PromiseImpl$argument_0
at node_modulesreact-nativenode_modulespromisesetimmediatecore.js:45:6 in tryCallTwo
at node_modulesreact-nativenode_modulespromisesetimmediatecore.js:200:22 in doResolve
at node_modulesreact-nativenode_modulespromisesetimmediatecore.js:66:11 in Promise
at node_modulesregenerator-runtimeruntime.js:189:15 in callInvokeWithMethodAndArg
at node_modulesregenerator-runtimeruntime.js:212:38 in enqueue
at node_modulesregenerator-runtimeruntime.js:239:8 in exports.async
at App.js:102:4 in checkUser
at App.js:118:13 in useEffect$argument_0
at node_modulesreact-nativeLibrariesRendererimplementationsReactNativeRenderer-dev.js:19280:25 in invokePassiveEffectCreate
at node_modulesreact-nativeLibrariesRendererimplementationsReactNativeRenderer-dev.js:93:4 in invokeGuardedCallbackProd
at node_modulesreact-nativeLibrariesRendererimplementationsReactNativeRenderer-dev.js:318:2 in invokeGuardedCallback
at node_modulesreact-nativeLibrariesRendererimplementationsReactNativeRenderer-dev.js:19362:29 in flushPassiveEffectsImpl
at node_modulesschedulercjsscheduler.development.js:468:23 in unstable_runWithPriority
at node_modulesreact-nativeLibrariesRendererimplementationsReactNativeRenderer-dev.js:18126:21 in performSyncWorkOnRoot
at node_modulesreact-nativeLibrariesRendererimplementationsReactNativeRenderer-dev.js:5911:33 in runWithPriority$argument_1
at node_modulesschedulercjsscheduler.development.js:468:23 in unstable_runWithPriority
at node_modulesreact-nativeLibrariesRendererimplementationsReactNativeRenderer-dev.js:5906:23 in flushSyncCallbackQueueImpl
at node_modulesreact-nativeLibrariesRendererimplementationsReactNativeRenderer-dev.js:5893:28 in flushSyncCallbackQueue
at node_modulesreact-nativeLibrariesRendererimplementationsReactNativeRenderer-dev.js:17745:30 in scheduleUpdateOnFiber
at node_modulesreact-nativeLibrariesRendererimplementationsReactNativeRenderer-dev.js:21484:23 in updateContainer
at node_modulesreact-nativeLibrariesRendererimplementationsReactNativeRenderer-dev.js:22144:17 in render
at node_modulesreact-nativeLibrariesReactNativerenderApplication.js:58:4 in renderApplication
at node_modulesreact-nativeLibrariesReactNativeAppRegistry.js:117:25 in runnables.appKey.run
at node_modulesreact-nativeLibrariesReactNativeAppRegistry.js:202:4 in runApplication
at node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:414:4 in __callFunction
at node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:113:6 in __guard$argument_0
at node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:365:10 in __guard
at node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:112:4 in callFunctionReturnFlushedQueue

切换仅onauthstatechange到版本8/版本9比较语法工作:onAuthStateChanged(从auth实例链接):

useEffect(() => {
async function checkUser() {
const auth = getAuth(firebaseApp);
auth.onAuthStateChanged(user => {
if(user !== null) {
setIsLogged(true);
setLoaded(true);
} else {
setIsLogged(false);
setLoaded(true);
}
})
}
checkUser();
}, []);

如果有帮助的话,我也用模块化9语法来初始化。

ConfigFirebase.js:

import { initializeApp } from 'firebase/app';
const firebaseConfig = {
...
...
};
const firebaseApp = initializeApp(firebaseConfig);
export default firebaseApp;

试试这个:

onAuthStateChanged(auth, (user)=>{ ....

注意auth不是回调函数的参数

相关内容

  • 没有找到相关文章

最新更新