升级到 Firebase JS SDK v8 后,在"Firebase"中找不到导出'firestore'(作为"Firebase"导入)



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

import * as firebase from 'firebase';

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

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

在中找不到导出"firestore"(作为"firebase"导入("firebase"类型"typeof"上不存在属性"firestore"import("appPath/node_modulesfirebase/index"('

我找到了一个变通方法,将firebase更改为firebase。默认值,例如

firebase.default.firestore.FieldValue.serverTimestamp()

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

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

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

但这给了我以下错误:

未捕获的Firebase错误:Firebase:没有Firebase应用程序"[DEFAULT]"created-调用Firebase App.initializeApp(((App/no-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';
...

取自防火基地文件

当我更新到Angular 11时,我遇到了同样的问题。我尝试了安装firebase管理库的修复程序,并遵循了这个线程的指示,但这不应该在浏览器中运行,并导致了一些其他问题,所以我放弃了。

我从AngularFire的发布说明中注意到,最新版本不支持旧版本的JS SDK,这就是该函数的来源,因此我删除了node_modules、package-lock.json文件,并运行npm缓存clean--force,然后运行npm install以运行clean。这并没有起到什么作用,但我感到很有成就感。

然后我遇到了这个线程,它解释了我的问题,并通过从更改库来进行编译

从"firebase/app"导入*作为firebase;

从"firebase/app"导入firebase;

这删除了";找不到消防仓库";错误,并且编译正确。使用原始代码:

获取firebaseTimestamp(({return firebase.firestore.FieldValue.serverTimestamp((;}

希望这能有所帮助-这是一个棘手的bug。

使用

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

而不是

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

这可能有助于

之前:版本8

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

更改为====>

之后:版本9紧凑型

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

嗨,这里是我使用的表格

从"@angular/fire/compat/auth"导入{AngularFireAuth};


从'firebase/compat/app'导入firebase;

希望它能有所帮助!

实际上你只需要做:

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

编译时出现问题:在'firebase/app'中找不到导出'default'(作为'firebase'导入(

import firebase from 'firebase/app';
import { auth } from '../misc/firebase';

根据v9更新,我已经更改了导入语句,但错误仍然存在

import firebase from 'firebase/compat/app';

最新更新