Reactjs 反应:无法从其他文件调用函数

Reactjs 反应:无法从其他文件调用函数,reactjs,firebase,firebase-authentication,Reactjs,Firebase,Firebase Authentication,我是一个新的反应和有角度的背景。一切正常,但当我试图检查firebase是否已初始化时,突然出现了以下错误: TypeError: _assets_Services__Firebase__WEBPACK_IMPORTED_MODULE_11__.default.isInitialised is not a function 以下是我的App.js的相关片段: import Firebase from './assets/Services/Firebase'; function App() {

我是一个新的反应和有角度的背景。一切正常,但当我试图检查firebase是否已初始化时,突然出现了以下错误:

TypeError: _assets_Services__Firebase__WEBPACK_IMPORTED_MODULE_11__.default.isInitialised is not a function
以下是我的App.js的相关片段:

import Firebase from './assets/Services/Firebase';

function App() {
  const [isLoggedIn, setLogin] = useState(true)
  const [firebaseInitialized, setFirebaseInitialized] = useState(true)

  useEffect(() => {
    Firebase.isInitialised().then(val => {
      setFirebaseInitialized(val)
    })
  })
下面是Firebase.js:

  class Firebase {
      constructor() {
        app.initializeApp(firebaseConfig);
        this.auth = app.auth();
        this.db = app.firestore();
      }

      isInitialized() {
          return new Promise(resolve => {
              this.auth.onAuthStateChanged(resolve)
          })
      }
我做了一点调查,发现有些人也有同样的问题,因为版本不匹配。 下面是my package.json中的一个片段:

    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "react-router-dom": "^5.2.0",
    "react-scripts": "4.0.1",

您必须从
Firebase
类创建一个实例,然后才能访问其方法

const firebase = new Firebase();
firebase.isInitialized()
除非将
i初始化为静态

static isInitialized() {
  return new Promise(resolve => {
    this.auth.onAuthStateChanged(resolve)
  })
}
那么你可以这样称呼它

Firebase.isInitialized()
更新
你的问题是打字错误,你用
i初始化
来称呼它,而
i初始化

应该是
i初始化
,但仍然不走运。创建实例后,它仍然显示它不是一个函数。TypeError:firebase.IsInitialized不是函数。即使尝试将其定义为静态,它仍然显示以前的错误。因为它返回一个承诺,所以您需要使用
然后
。你在用它吗<代码>firebase.IsInitialized()。然后(响应=>console.log(响应))是<代码>Firebase.IsInitialized()。然后(val=>{setFirebaseInitialized(val)})
导出了它吗<代码>导出默认Firebase
因此问题是输入错误,isInitialized=>isInitialized