Javascript 升级到Firebase JS 8.0.0:尝试导入错误:';app&x27;不是从';firebase/app';(作为firebase导入)
升级到8.0.0后,出现以下错误: 尝试导入错误:“initializeApp”未从“firebase/app”导出(作为“firebase”导入) 我的导入如下所示:Javascript 升级到Firebase JS 8.0.0:尝试导入错误:';app&x27;不是从';firebase/app';(作为firebase导入),javascript,typescript,firebase,Javascript,Typescript,Firebase,升级到8.0.0后,出现以下错误: 尝试导入错误:“initializeApp”未从“firebase/app”导出(作为“firebase”导入) 我的导入如下所示: 从“firebase/app”导入*为firebase firebase.initializeApp({…}) TypeScript还抱怨: “导入类型(“/path/to/my/file”)”上不存在属性“initializeApp”。ts(2339) 如何解决此问题?在版本中,Firebase SDK在处理导出的方式上发生
从“firebase/app”导入*为firebase
firebase.initializeApp({…})
TypeScript还抱怨:
“导入类型(“/path/to/my/file”)”上不存在属性“initializeApp”。ts(2339)
如何解决此问题?在版本中,Firebase SDK在处理导出的方式上发生了突破性的变化:
突破性更改:浏览器
package.json文件中的字段现在指向ESM
捆绑包而不是CJS捆绑包。使用ESM导入的用户必须
现在使用默认导入,而不是名称空间导入
8.0.0之前
import * as firebase from 'firebase/app'
8.0.0之后
import firebase from 'firebase/app'
使用require('firebase/app')
或require('firebase')
的代码将
仍然有效,但为了获得正确的打字(代码完成,
例如)用户应将这些require调用更改为
require('firebase/app')。默认值
或require('firebase')。默认值
。这
是因为SDK现在对ESM包使用键入,而
不同的包共享一个打字文件
因此,您必须使用新的ESM捆绑包默认导出:
从“firebase/app”导入firebase
firebase.initializeApp({…})
如果您使用的是auth,则需要单独导入:
导入“firebase/auth”;
因为您并不是将所有内容都像“*作为firebase”一样导入。导入firebase的旧方法:从“firebase/app”导入*作为firebase 在8.0.0版本中导入的新方法:从“firebase/app”导入firebase 我做这件事的方式。只有前两行是相关的,其他行只是作为我的代码的一部分添加的,但它非常一般tbh
import firebase from "firebase/app"
import "firebase/auth"
const firebaseConfig = {
apiKey: XXXX,
authDomain: XXX,
projectId: XXXX,
storageBucket: XXXX,
messagingSenderId: XXXX,
appId: XXXX,
}
if (!firebase.apps.length) {
firebase.initializeApp(firebaseConfig)
}
export const auth = firebase.auth()
export const googleAuthProvider = new firebase.auth.GoogleAuthProvider()
将XXXX替换为ur数据,只是要明确:)这是一个更新问题,虽然您可以修复如何导入firebase,但无法修复如何将其导入到您使用的库中,您必须等待这些库更新 8.0.0之前 从“firebase/app”导入*作为firebase 8.0.0之后 从“firebase/app”导入firebase 类库的FirebaseUI身份验证尚未更新,自4月份以来我一直在等待FirebaseUI更新
我自己的错误提示:确保所有拼写正确,并尝试将其用于其他软件包(如消息传递)。我在此处找到了相关文档:示例(来自上述站点)://此导入加载firebase命名空间及其所有类型信息。从“firebase/app”导入firebase;//这些导入将单个服务加载到firebase命名空间中。导入“firebase/auth”;导入“firebase/数据库”@MikkoPöri是的,这是使用模块绑定器集成Firebase SDK的文档。这一部分在8.0.0中没有改变:@DougStevenson我怎样才能只导入类型
firebase.firestore
?对我来说,v8.0之后它就坏了。以前我从“firebase”导入了{firestore},它得到了适合我的类型@mesqueeb如果你有新问题,请单独发布。