javascript - 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')
解决方案
我找到了问题的根源。我正在使用react-firebaseui
- 不幸的是,它不支持 firebase 的模块化版本(还)。所以解决方案是使用其他东西,或者使用 compat 库:
import firebase from 'firebase/compat/app'
推荐阅读
- mongodb - 同一 MongoDB 中的 $push 和 $set 更新文档中的相同数组元素
- sql - 显示列中值的最小数量
- assembly - 将 ARMv8 Crypto 加速的 SHA256 集成到现有的 C 实现函数中
- c++ - 使用thrust::device_vector 的thrust::complex 编译错误,可能是由于错误的实现
- php - 两个数组 PHP 的所有组合
- sql - 删除重复值并替换为 null (Power BI - SQL)
- reactjs - 匹配某个字符串或为空的可选路由路径
- html - 在 a 中有一个列表
- 使用 Bootstrap 标记
- python - 在dict值python中访问dict
- sql - 将字符串与列中的 Int 连接起来