【问题标题】:Use Firebase Emulator Suite across multiple projects在多个项目中使用 Firebase Emulator Suite
【发布时间】:2021-02-09 03:18:25
【问题描述】:

我通常将我的 Firebase 项目组织为网络应用程序、管理器门户和云功能的单独存储库。因为 web 应用程序和管理器门户使用相同的 firebase 项目,所以我将云功能保存在各自单独的存储库中。所以 3 个不同的 repos/projects 使用同一个 Firebase 项目。

我正在测试如何通过此设置使用 Firebase Local Emulator Suite,但似乎无法在我的 Cloud Function 项目中为云功能启动模拟器,然后在我的 Web 应用项目中使用该模拟器对于firestore和调用函数,然后对于我的经理门户项目也是如此。这将导致冲突并导致它们都在不同的端口上运行,并且函数项目将无法访问 firestore 模拟器,并且 Web 应用程序和管理器将无法访问函数模拟器。

有没有办法让这个工作?我能看到的唯一方法是将我的管理器应用程序、Web 应用程序和功能都放在同一个项目/存储库中……出于多种原因,我不想这样做。

目前我刚刚在 firebase 上建立了一个 2nd Staging 项目并将其用于测试,但我希望能够在本地完成所有这些工作。非常感谢任何帮助。

【问题讨论】:

    标签: firebase firebase-cli


    【解决方案1】:

    您可以在项目目录中使用符号链接来创建“假”函数目录。然后,您可以运行模拟器的单个实例。

    运行两个模拟器实例可能会导致一些奇怪的错误,因为不建议这样做。

    在窗户上:

    mklink /D "R:\my-cloud-functions-proj\functions" "R:\my-web-app\functions"
    

    【讨论】:

      【解决方案2】:

      我今天也遇到了同样的问题,结果很简单:

      • 在你的主项目中,像往常一样启动你的模拟器,例如firebase emulators:start --only firestore

      • 在您的依赖项目中,不要尝试启动 firestore 模拟器,而是按如下方式初始化 firebase 配置:

      import * as express from 'express'
      import * as admin from 'firebase-admin'
      import * as functions from 'firebase-functions'
      
      admin.initializeApp(functions.config().firebase)
      
      var db = admin.firestore()
      if (process.env.NODE_ENV !== 'production') {
        db.settings({
          host: "localhost:8080",
          ssl: false
        })
      }
      

      【讨论】:

      • 你仍然可以在模拟器运行--only firestore时调用本地函数?
      • 澄清一下,我有一个运行firestore,hosting 模拟器的项目和另一个运行functions 的项目。从运行 --only function 的函数项目中,我正在使用运行 --only firestore,hosting 的另一个项目中的数据库
      • 如何为 Flutter 项目配置类似的东西?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 2021-12-28
      相关资源
      最近更新 更多