开发者问题收集

React Native -typeError:_firebase.default.auth不是一个函数

2021-11-21
2602

我有一个 React Native 应用程序并具有以下功能:

import firebase from './firebase'

export function MainNavigator() {
  const [token, setToken] = useAtom(tokenAtom);

  useEffect(() => {
    firebase.auth().onIdTokenChanged(async (user) => {
      setToken(user ? await user.getIdToken() : null);
    });
  }, []);
  .....
  .... more code

上述代码在 Expo 中有效,但我有一个新的 React Native 项目(不是使用 expo 构建的),并且失败了:

我的 package.json 文件中有以下内容:

"@react-native-firebase/app": "^13.0.1",
"@react-native-firebase/functions": "^13.0.1",
"firebase": "^9.5.0",

而我的 firebase.js 文件如下(根目录)

import * as firebase from "firebase/app";

// Your web app's Firebase configuration
var firebaseConfig = {
    apiKey: "Secret stuff",
    authDomain: "Secret stuff",
    databaseURL: "Secret stuff",
    projectId: "Secret stuff",
    storageBucket: "Secret stuff",
    messagingSenderId: "Secret stuff",
    appId: "Secret stuff",
    measurementId: "Secret stuff"
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);

export default firebase;

我收到以下错误:

TypeError: _firebase.default.auth is not a function. (In '_firebase.default.auth()', '_firebase.default.auth' is undefined)

2个回答

您显示的代码均未导入 Firebase Authentication SDK。因此,当您尝试使用 firebase.auth() 时,它会正确指示找不到该 SDK。

我猜您也想使用类似以下内容导入 Auth SDK:

import "firebase/auth";

我还建议您查看有关 升级到 v9 或 v9/compat SDK 的文档。

Frank van Puffelen
2021-11-21

// v9 兼容包与 v8 代码 API 兼容

import firebase from 'firebase/compat/app';
import 'firebase/compat/auth';
import 'firebase/compat/firestore';

docs

Kieronny Oliveira
2022-01-20