升级到 firebase js sdk v8 后,在 'firebase' 中找不到导出 'firestore'(导入为 'firebase')

export 'firestore' (imported as 'firebase') was not found in 'firebase' after upgrading to firebase js sdk v8

我已经将 firebase JS SDK 从 v7 升级到 v8.0.0,我正在像这样导入 firebase。

import * as firebase from 'firebase';

访问以下任何一项会导致以下错误。

firebase.firestore.FieldValue.serverTimestamp()
firebase.User
firebase.auth.UserCredential

export 'firestore' (imported as 'firebase') was not found in 'firebase' Property 'firestore' does not exist on type 'typeof import("appPath/node_modules/firebase/index")'

我通过将 firebase 更改为 firebase.default 找到了解决方法,例如

firebase.default.firestore.FieldValue.serverTimestamp()

这是解决此问题的正确方法吗?

编辑:我也在项目中使用 AngularFire。 我尝试使用:

import firebase from 'firebase/app';
import 'firebase/firestore';
export const firestore = firebase.firestore();

但这给了我以下错误:

Uncaught FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app).

当我更新到 Angular 11 时,我 运行 遇到了同样的问题。我尝试修复安装 firebase-admin 库并按照 的说明进行操作,但是不应该在浏览器中 运行 并导致一些其他问题,所以我放弃了。

我在AngularFire的release notes中注意到最新版本不支持旧版本的JS SDK,这就是这个功能的来源,所以我删除了node_modules、package-lock.json 文件和 运行 npm cache clean --force 然后 npm install 到 运行 clean。那什么也没做,但我觉得很有成就感。

然后我 运行 进入 这解释了我的问题并通过从

更改库来编译东西

'import * as firebase from 'firebase/app';

import firebase from 'firebase/app';

这消除了“找不到 firestore”错误并且编译正确。使用原始代码:

get firebaseTimestamp() { return firebase.firestore.FieldValue.serverTimestamp(); }

希望这对您有所帮助 - 这是一个棘手的错误。

使用

import firebase from "firebase/app";
import "firebase/database";

而不是

'import * as firebase from 'firebase/app';

这可能有帮助

对于在版本 9 Firebase 上遇到类似错误的用户,请确保将路径更改为:

import firebase from 'firebase/compat/app';
import 'firebase/compat/auth';
import 'firebase/compat/firestore';
...

而不是:

import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
...

取自firebase doc

其实你只需要做:

import "firebase/compat/database"; // in angular-fire-database.js

import firebase from 'firebase/compat/app'; // in angular-fire.js

你好这里是我使用的表格

import { AngularFireAuth } from '@angular/fire/compat/auth';


import firebase from 'firebase/compat/app';

希望对您有所帮助!