找不到模块 'firebase' 或其相应的类型声明。反应 + 打字稿 + 火力地堡
Cannot find module 'firebase' or its corresponding type declarations. React + TypeScript + Firebase
我想更改我在 1 月份从事的 React 项目以使用打字稿。我安装了所有类型和包,唯一给我带来问题的文件是 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 _;
当我更改为打字稿时,我将鼠标悬停在 vscode 中的 import firebase from "firebase";
行时出现此错误。
Cannot find module 'firebase' or its corresponding type declarations.
这是我的 package.json 我正在使用 yarn
:
{
...
"private": true,
"dependencies": {
..
"firebase": "^9.0.0",
...
},
"scripts": {
..
},
"eslintConfig": {
..
},
"browserslist": {
..
},
"devDependencies": {
"@types/firebase": "^3.2.1",
"@types/react-router-dom": "^5.1.8"
}
}
这是因为默认导入来自 firebase/app
而不是 firebase
祝你有愉快的一天:)
编辑:没看到你用的是SDK的V9。在这个版本中,初始化和 firebase 的所有逻辑都不一样。
按照本指南更新您的代码 https://firebase.google.com/docs/web/modular-upgrade
"firebase": "^9.0.0",
// ...
"@types/firebase": "^3.2.1",
您可能会注意到这些是非常不同的版本号。那是因为 firebase 带有内置类型,所以不再需要 @types/firebase 包并且已经 4 年没有更新了。从你的 package.json 中删除 "@types/firebase": "^3.2.1",
并重新 运行 yarn
我想更改我在 1 月份从事的 React 项目以使用打字稿。我安装了所有类型和包,唯一给我带来问题的文件是 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 _;
当我更改为打字稿时,我将鼠标悬停在 vscode 中的 import firebase from "firebase";
行时出现此错误。
Cannot find module 'firebase' or its corresponding type declarations.
这是我的 package.json 我正在使用 yarn
:
{
...
"private": true,
"dependencies": {
..
"firebase": "^9.0.0",
...
},
"scripts": {
..
},
"eslintConfig": {
..
},
"browserslist": {
..
},
"devDependencies": {
"@types/firebase": "^3.2.1",
"@types/react-router-dom": "^5.1.8"
}
}
这是因为默认导入来自 firebase/app
而不是 firebase
祝你有愉快的一天:)
编辑:没看到你用的是SDK的V9。在这个版本中,初始化和 firebase 的所有逻辑都不一样。 按照本指南更新您的代码 https://firebase.google.com/docs/web/modular-upgrade
"firebase": "^9.0.0",
// ...
"@types/firebase": "^3.2.1",
您可能会注意到这些是非常不同的版本号。那是因为 firebase 带有内置类型,所以不再需要 @types/firebase 包并且已经 4 年没有更新了。从你的 package.json 中删除 "@types/firebase": "^3.2.1",
并重新 运行 yarn