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 aboveimport 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,但文档上说你不应该直接与这些包交互,请指教。
