升级到 firebase js sdk v8 后,在“firebase”中找不到导出“firestore”(导入为“firebase”)
Posted
技术标签:
【中文标题】升级到 firebase js sdk v8 后,在“firebase”中找不到导出“firestore”(导入为“firebase”)【英文标题】:export 'firestore' (imported as 'firebase') was not found in 'firebase' after upgrading to firebase js sdk v8 【发布时间】:2021-04-15 21:40:09 【问题描述】:我已将 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” 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 创建 - 调用 Firebase App.initializeApp() (app/no-app)。
【问题讨论】:
【参考方案1】:当我更新到 Angular 11 时遇到了同样的问题。我尝试修复以安装 firebase-admin 库并按照this thread 的指示进行操作,但这不应该在浏览器中运行并导致其他问题问题,所以我放弃了。
我从AngularFire的release notes注意到最新版本不支持旧版本的JS SDK,这是这个函数的来源,所以我删除了node_modules,package-lock.json文件,然后运行npm cache clean --force 然后 npm install 运行干净。什么都没做,但我觉得很有成就感。
然后我遇到了this thread,它解释了我的问题并通过更改库来编译
'import * as firebase from 'firebase/app';
到
从“firebase/app”导入firebase;
这消除了“找不到firestore”错误并且它编译正确。使用原始代码:
获取 firebaseTimestamp() 返回 firebase.firestore.FieldValue.serverTimestamp();
希望这会有所帮助 - 这是一个棘手的错误。
【讨论】:
见:firebase.google.com/support/release-notes/…【参考方案2】:对于那些在版本 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
【讨论】:
完美运行!谢谢。你能告诉我你是怎么知道这个变化的吗? @Sobhani 没有问题! Tbh 最近在我重新迭代我的一个客户项目时发现了自己。注意到 v8.x.x -> v9.x.x 更新,因此检查了文档是否有任何重大更改。 为我工作谢谢兄弟! 非常感谢。【参考方案3】:使用
import firebase from "firebase/app";
import "firebase/database";
而不是
'import * as firebase from 'firebase/app';
这可能会有所帮助
【讨论】:
【参考方案4】:其实你只需要这样做:
import "firebase/compat/database"; // in angular-fire-database.js
import firebase from 'firebase/compat/app'; // in angular-fire.js
【讨论】:
以上是关于升级到 firebase js sdk v8 后,在“firebase”中找不到导出“firestore”(导入为“firebase”)的主要内容,如果未能解决你的问题,请参考以下文章
Firebase v9 在移动设备上加载大型 iframe.js (263K)
WebSphere V8.5 静默安装升级-使用响应文件静默安装软件包(生成相应文件,不安装)以及managesdk管理SDK