找不到模块“firebase”或其相应的类型声明。反应 + TypeScript + Firebase

cri*_*ari 9 firebase typescript firebase-realtime-database create-react-app google-cloud-firestore

我想将我一月份从事的 React 项目更改为使用 Typescript。我安装了所有类型和软件包,唯一给我带来问题的文件是该firebase文件。

这就是我当时使用的东西js

import firebase from "firebase";
import "firebase/storage";
import "firebase/auth";
import "firebase/firestore";
import dotenv from "dotenv";

dotenv.config();

const firebaseConfig = {
  apiKey: process.env.API_KEY,
  authDomain: process.env.AUTH_DOMAIN,
  projectId: process.env.PROJECT_ID,
  storageBucket: process.env.STORAGE_BUCKET,
  messagingSenderId: process.env.MESSAGING_SENDER_ID,
  appId: process.env.APP_ID,
  measurementId: process.env.MEASUREMENT_ID,
};
const app =
  firebase.apps.length > 0
    ? firebase.app()
    : firebase.initializeApp(firebaseConfig);

const auth = app.auth();
const db = app.firestore();
const storage = app.storage();
const timestamp = firebase.firestore.FieldValue.serverTimestamp();

const EmailProvider = new firebase.auth.EmailAuthProvider();
const _ = {
  auth,
  db,
  storage,
  timestamp,
  EmailProvider,
};
export default _;
Run Code Online (Sandbox Code Playgroud)

当我更改为打字稿时,当我将鼠标悬停import firebase from "firebase";在 vscode 中的行上时,我收到此错误。

Cannot find module 'firebase' or its corresponding type declarations. 
Run Code Online (Sandbox Code Playgroud)

这是我的 package.json ,我使用yarn

Cannot find module 'firebase' or its corresponding type declarations. 
Run Code Online (Sandbox Code Playgroud)

tho*_*que 24

这是因为默认导入来自firebase/app而不是firebase

祝你今天过得愉快 :)

编辑:没有看到您使用的是 SDK 的 V9。在这个版本中,firebase 的初始化和所有逻辑都不相同。按照本指南更新您的代码https://firebase.google.com/docs/web/modular-upgrade


Nic*_*wer 5

"firebase": "^9.0.0",
// ...
"@types/firebase": "^3.2.1",
Run Code Online (Sandbox Code Playgroud)

您可能会注意到这些是非常不同的版本号。这是因为 firebase 带有内置类型,因此不再需要 @types/firebase 包,并且已经 4 年没有更新了。"@types/firebase": "^3.2.1",从 package.json 中删除并重新运行yarn