首页 > 解决方案 > Import * as firebase from 'firebase/app' 返回 undefined

问题描述

我正在尝试在我的 Next.js 项目上使用 firebase v9,但是每当我导入它时,它似乎返回 undefined ...

import * as firebase from 'firebase/app'

export function getFirebaseApp() {
  const clientCredentials = { ... }
  return firebase.initializeApp(clientCredentials)
}

但是,当我尝试在浏览器中运行它时,我得到的只是这个错误:

TypeError: Cannot read property 'initializeApp' of undefined

这发生在导入的任何变化中,我尝试了几个:

import * as firebase from 'firebase/app'
import firebase from 'firebase/app'
import { initializeApp } from 'firebase/app'

// and the same thing importing from '@firebase/app' instead, though don't think that'd ever work

我真的不知道发生了什么,我认为这不是 Next.js 的问题,因为即使 VSCode 也不建议从 firebase 导入任何内容,即使它已安装(我可以在 中看到node_modules)。我有这条线package.json

{
  "dependencies": {
    "firebase": "^9.0.2"
  }
}

所以这真的是个谜,我真的不知道发生了什么。有什么建议可以解决这个问题吗?

编辑:因为我收到了两条建议,所以我想我会把它放在这里:

我使用的是模块化SDK,所以我尝试initializeApp直接导入,但还是不行:

import { initializeApp } from 'firebase/app'

export function getFirebaseApp() {
  const clientCredentials = { ... }
  return initializeApp(clientCredentials)
}
TypeError: Cannot read properties of undefined (reading 'initializeApp')

标签: javascriptfirebasenpmnext.js

解决方案


我找到了问题的根源。我正在使用react-firebaseui- 不幸的是,它不支持 firebase 的模块化版本(还)。所以解决方案是使用其他东西,或者使用 compat 库:

import firebase from 'firebase/compat/app'

推荐阅读