网站搜索

reactjs - firebase auth 库缺少类型


出于某种原因,我似乎找不到适用于 firebase 的相应类型。

在 TypeScript 中创建一个新项目时,例如 npx create-react-app test --template typescript,并且在安装了 firebase 和 @types/firebase 之后,我收到一个:

Property 'auth' does not exist on type 'typeof import("/Users/username/test/node_modules/firebase/app/dist/app/index")'.

尝试这样调用它时:

import * as firebase from "firebase/app";

firebase.auth();

我也尝试了以下方式:

  • import firebase from "firebase/app"; // Same error as above
  • import firebase from "firebase"; // Cannot find module 'firebase' or its corresponding type declarations.
  • 按照一些文档的建议添加了 import "firebase/auth",但没有效果

我使用的是最新版本,所以:

"firebase": "^9.1.0", // Dependency
"@types/firebase": "^3.2.1" // Dev dependency

难道我可能需要安装一个不同的 @types/ 包吗?还是说这两个版本包含了不匹配的类型定义?

答案#1

您尚未使用从 V9.0.0 引入的新模块化语法。新语法如下所示:

import { initializeApp } from "firebase/app"
import { getAuth } from "firebase/auth"

const app = initializeApp({...config})

const auth = getAuth(app)

export { auth }

如果你想使用现有的命名空间语法,那么你可以使用 compat 版本:

import firebase from "firebase/compat/app"
import "firebase/compat/auth"

我建议遵循升级到新的模块化语法,并参考文档,文档中有两种语法的示例。还可以查看这个 Firecast,以了解有关新 SDK 的更多信息。

答案#2

即使使用新的模块化语法,我在这方面仍然遇到问题,我在 IDE 中没有获得像往常一样的类型支持。我确实引入了 @firebase/app-types,但文档上说你不应该直接与这些包交互,请指教。