首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >util.getModularInstance(auth).onAuthStateChanged不是一个函数升级到Firebase 9语法

util.getModularInstance(auth).onAuthStateChanged不是一个函数升级到Firebase 9语法
EN

Stack Overflow用户
提问于 2022-07-12 02:20:58
回答 1查看 236关注 0票数 1

我正在尝试将Firebase从8升级到9,按照以下指南:https://firebase.google.com/docs/web/modular-upgrade

但我不断地遇到错误

util.getModularInstance(auth).onAuthStateChanged不是一个函数。

奇怪的是,当我切换回旧的Version 8/Version 9 Compat语法,同时维护版本9模块导入(没有compat)时,只适用于onAuthStateChanged函数

我正在使用Firebase 9.9.0 npm包。

任何帮助都将不胜感激!

进口报表:

代码语言:javascript
运行
复制
import firebaseApp from './src/config/ConfigFirebase';
import { getAuth, onAuthStateChanged } from "firebase/auth";

第9版模块语法: onAuthStateChanged (免费功能):

代码语言:javascript
运行
复制
useEffect(() => {

    async function checkUser() {

      const auth = getAuth(firebaseApp);
      onAuthStateChanged((auth, user) => {
        if(user !== null) {
          setIsLogged(true);
          setLoaded(true);

        } else {
          setIsLogged(false);
          setLoaded(true);

        }
      })
    }

    checkUser();

  }, []);

由此产生的错误:

代码语言:javascript
运行
复制
[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\@firebase\auth\dist\rn\phone-51423d6b.js:5862:49 in tslib.__awaiter$argument_3
at App.js:105:6 in checkUser
at node_modules\regenerator-runtime\runtime.js:63:36 in tryCatch
at node_modules\regenerator-runtime\runtime.js:294:29 in invoke
at node_modules\regenerator-runtime\runtime.js:63:36 in tryCatch
at node_modules\regenerator-runtime\runtime.js:155:27 in invoke
at node_modules\regenerator-runtime\runtime.js:190:16 in PromiseImpl$argument_0
at node_modules\react-native\node_modules\promise\setimmediate\core.js:45:6 in tryCallTwo
at node_modules\react-native\node_modules\promise\setimmediate\core.js:200:22 in doResolve
at node_modules\react-native\node_modules\promise\setimmediate\core.js:66:11 in Promise
at node_modules\regenerator-runtime\runtime.js:189:15 in callInvokeWithMethodAndArg
at node_modules\regenerator-runtime\runtime.js:212:38 in enqueue
at node_modules\regenerator-runtime\runtime.js:239:8 in exports.async
at App.js:102:4 in checkUser
at App.js:118:13 in useEffect$argument_0
at node_modules\react-native\Libraries\Renderer\implementations\ReactNativeRenderer-dev.js:19280:25 in invokePassiveEffectCreate
at node_modules\react-native\Libraries\Renderer\implementations\ReactNativeRenderer-dev.js:93:4 in invokeGuardedCallbackProd
at node_modules\react-native\Libraries\Renderer\implementations\ReactNativeRenderer-dev.js:318:2 in invokeGuardedCallback
at node_modules\react-native\Libraries\Renderer\implementations\ReactNativeRenderer-dev.js:19362:29 in flushPassiveEffectsImpl
at node_modules\scheduler\cjs\scheduler.development.js:468:23 in unstable_runWithPriority
at node_modules\react-native\Libraries\Renderer\implementations\ReactNativeRenderer-dev.js:18126:21 in performSyncWorkOnRoot
at node_modules\react-native\Libraries\Renderer\implementations\ReactNativeRenderer-dev.js:5911:33 in runWithPriority$argument_1
at node_modules\scheduler\cjs\scheduler.development.js:468:23 in unstable_runWithPriority
at node_modules\react-native\Libraries\Renderer\implementations\ReactNativeRenderer-dev.js:5906:23 in flushSyncCallbackQueueImpl
at node_modules\react-native\Libraries\Renderer\implementations\ReactNativeRenderer-dev.js:5893:28 in flushSyncCallbackQueue
at node_modules\react-native\Libraries\Renderer\implementations\ReactNativeRenderer-dev.js:17745:30 in scheduleUpdateOnFiber
at node_modules\react-native\Libraries\Renderer\implementations\ReactNativeRenderer-dev.js:21484:23 in updateContainer
at node_modules\react-native\Libraries\Renderer\implementations\ReactNativeRenderer-dev.js:22144:17 in render
at node_modules\react-native\Libraries\ReactNative\renderApplication.js:58:4 in renderApplication
at node_modules\react-native\Libraries\ReactNative\AppRegistry.js:117:25 in runnables.appKey.run
at node_modules\react-native\Libraries\ReactNative\AppRegistry.js:202:4 in runApplication
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:414:4 in __callFunction
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:113:6 in __guard$argument_0
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:365:10 in __guard
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:112:4 in callFunctionReturnFlushedQueue

only onAuthStateChanged切换到Version 8/Version 9 Compat Syntax : auth.onAuthStateChanged (链接自auth实例):

代码语言:javascript
运行
复制
useEffect(() => {

    async function checkUser() {

      const auth = getAuth(firebaseApp);
      auth.onAuthStateChanged(user => {
        if(user !== null) {
          setIsLogged(true);
          setLoaded(true);

        } else {
          setIsLogged(false);
          setLoaded(true);

        }
      })
    }

    checkUser();

  }, []);

为了防止有帮助,我也在用Modulal9语法初始化。

ConfigFirebase.js:

代码语言:javascript
运行
复制
import { initializeApp } from 'firebase/app';

const firebaseConfig = {
  ...
  ...
};

const firebaseApp = initializeApp(firebaseConfig);

export default firebaseApp;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-17 09:22:36

试一试:

代码语言:javascript
运行
复制
onAuthStateChanged(auth, (user)=>{ ....

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72946394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档