我已将 firebase JS SDK 从 v7 升级到 v8.0.0,并且像这样导入 firebase。
import * as firebase from 'firebase';
访问以下任何一项都会导致以下错误。
firebase.firestore.FieldValue.serverTimestamp()
firebase.User
firebase.auth.UserCredential
在以下位置找不到导出“firestore”(导入为“firebase”) '火力基地' 类型“typeof”上不存在属性“firestore” 导入(“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();
但这给了我以下错误:
未捕获的 FirebaseError:Firebase:没有 Firebase 应用程序“[DEFAULT]” 创建 - 调用 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';
...
取自 firebase 文档
当我更新到 Angular 11 时,我遇到了同样的问题。我尝试修复安装 firebase-admin 库,并按照 this thread 的指示进行操作,但这不应该在浏览器中运行,并导致了一些其他问题,所以我放弃了。
我从AngularFire的发行说明中注意到,最新版本不支持旧版本的JS SDK,而这正是这个函数的来源,所以我删除了node_modules,package-lock.json文件,并运行了npm cache clean --force 然后 npm install 来运行 clean。虽然什么也没做,但我感到很有成就感。
然后我遇到了这个线程,它解释了我的问题,并通过更改库来编译内容
'从'firebase/app'导入*作为firebase;
到
从“firebase/app”导入 firebase;
这消除了“找不到 firestore”错误并且编译正确。与原始代码一起使用:
获取 firebaseTimestamp() { 返回 firebase.firestore.FieldValue.serverTimestamp(); }
希望这有帮助 - 这是一个棘手的错误。
使用
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';
您的 config.js 文件的问题在于您如何初始化 Firebase 存储和 Firestore 实例。
在 Firebase 版本 9(也称为 Modular SDK)中,初始化 Firebase 和访问其服务的方法发生了变化。您应该使用模块化 Firebase SDK 语法,而不是 Firebase 版本 8 及更低版本中使用的命名空间导入方法。
以下是使用 Firebase Modular SDK 语法更正 config.js 文件的方法:
从“firebase/app”导入{initializeApp}; 从“firebase/storage”导入{getStorage};