如何解决在多个项目中使用Firebase Emulator Suite
我通常将Firebase项目组织成一个单独的仓库,用于Web应用程序,管理器门户和云功能。由于Web应用程序和管理器门户使用相同的Firebase项目,因此我将云功能保留在其自己的单独存储库中。因此,使用同一个Firebase项目的3个不同的回购/项目。
我正在测试如何通过此设置使用Firebase Local Emulator Suite,但没有出现,我可以在Cloud Function项目中启动云功能的模拟器,然后在Web应用程序项目中使用模拟器用于Firestore和调用函数,然后对于我的经理门户项目相同。这将导致冲突,并导致它们全部在不同的端口上运行,并且功能项目将无法访问Firestore模拟器,而Web应用程序和管理器将无法访问功能模拟器。
有没有办法使这项工作有效?我能看到的唯一方法是将我的经理应用程序,Web应用程序和功能全部放在同一个项目/存储库中...出于多种原因,我不想这样做。
目前,我刚刚在firebase上建立了一个第二阶段项目,并将其用于测试,但希望能够在本地完成所有这些工作。非常感谢您的帮助。
解决方法
今天我只是在努力挣扎,事实证明它很简单:
-
在您的主项目中,像往常一样启动仿真器,例如
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
})
}
,
您可以在项目目录中使用符号链接来创建“假”函数目录。然后您可以运行模拟器的单个实例。
运行模拟器的两个实例可能会导致一些奇怪的错误,因为不推荐这样做。
在窗户上:
mklink /D "R:\my-cloud-functions-proj\functions" "R:\my-web-app\functions"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。