升级到8.0.0后,出现以下错误:

try 导入错误:"initializeApp"未从"firebase/app"导出(作为"firebase"导入).

我的导入如下所示:

import * as firebase from "firebase/app"
firebase.initializeApp({ ... })

TypeScript还抱怨:

"导入类型("/path/to/my/file")"上不存在属性"initializeApp".ts(2339)

我该怎么解决这个问题?

推荐答案

在版本8.0.0中,Firebase SDK处理导出的方式发生了突破性的变化:

打破改变:包中有browser个字段.json文件现在指向ESM

8.0.0之前

import * as firebase from 'firebase/app'

8.0.0之后

import firebase from 'firebase/app'

使用require('firebase/app')require('firebase')的代码将

因此,您必须使用新的ESMBundle 包默认导出:

import firebase from "firebase/app"
firebase.initializeApp({ ... })

如果你正在使用SDK version 9.0,请阅读以下问题:

Typescript相关问答推荐

带有微前端的动态React路由问题

Webpack说你可能需要在Reactjs项目中增加一个加载器''

与字符串文字模板的结果类型匹配的打字脚本

如何使用函数填充对象?

类型脚本基于数组作为泛型参数展开类型

在实现自定义主题后,Angular 不会更新视图

为什么我的一个合成函数不能推断类型?

部分更新类型的类型相等

使用2个派生类作为WeakMap的键

刷新页面时,TypeScrip Redux丢失状态

Angular 自定义验证控件未获得表单值

打字错误TS2305:模块常量没有导出的成员

如何正确地将元组表格输入到对象数组实用函数(如ZIP)中,避免在TypeScrip 5.2.2中合并所有值

如何在Nextjs路由处理程序中指定响应正文的类型

如何在本地存储中声明该类型?

如何在Next.js和Tailwind.css中更改悬停时的字体 colored颜色

如何在Deno中获取Base64图像的宽/高?

如何使用警告实现`RecursiveReadonly<;T>;`,如果`T`是原语,则返回`T`而不是`RecursiveReadonly<;T>;`

如何在Type脚本中创建一个只接受两个对象之间具有相同值类型的键的接口?

如何向我的自定义样式组件声明 custom.d.ts ?