【问题标题】:export 'firestore' (imported as 'firebase') was not found in 'firebase' after upgrading to firebase js sdk v8升级到 firebase js sdk v8 后,在“firebase”中找不到导出“firestore”(导入为“firebase”)
【发布时间】: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)。

【问题讨论】:

    标签: angular typescript firebase angularfire


    【解决方案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(); }

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

    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2021-02-09
        • 2022-01-06
        • 2021-10-25
        • 1970-01-01
        • 2022-06-16
        • 1970-01-01
        • 1970-01-01
        • 2021-12-29
        相关资源
        最近更新 更多