Firebase serve --only functions VS local emulator 在本地运行云功能?
Posted
技术标签:
【中文标题】Firebase serve --only functions VS local emulator 在本地运行云功能?【英文标题】:Firebase serve --only functions VS local emulator to run cloud functions locally? 【发布时间】:2019-10-30 07:18:25 【问题描述】:到目前为止,我一直在执行以下操作以在开发过程中在本地使用和测试我的功能:
我让它在一个终端中运行:
firebase serve --only functions
我在初始化 Firebase 应用程序时将其添加到客户端代码中:
const config =
apiKey: process.env.FIREBASE_APP_API_KEY,
authDomain: process.env.FIREBASE_APP_AUTH_DOMAIN,
databaseURL: process.env.FIREBASE_APP_DATABASE_URL,
projectId: process.env.FIREBASE_APP_PROJECT_ID,
storageBucket: process.env.FIREBASE_APP_STORAGE_BUCKET,
messagingSenderId: process.env.FIREBASE_APP_MESSAGING_SENDER_ID
;
firebase.initializeApp(config);
// THIS IS THE DEFAULT HOST AND PORT USED BY 'firebase serve command'
firebase.functions().useFunctionsEmulator('http://localhost:5000');
我只测试了 HTTP 可调用函数,到目前为止一切正常。
但在文档中,我看到了:
https://firebase.google.com/docs/functions/local-emulator
在本地运行函数 Firebase CLI 包含一个 Cloud Functions 模拟器,可以模拟以下函数类型:
HTTPS 功能 可调用函数 Cloud Firestore 函数您可以在本地运行函数以在部署到生产之前对其进行测试。
1.安装 Firebase CLI - Link
2。设置管理员凭据(可选) - Link
$ set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json $ firebase emulators:start
完成这些步骤后,您的函数测试可以使用 Admin SDK 访问 Firebase 和 Google API。例如,在测试身份验证触发器时,模拟函数可以调用 admin.auth().getUserByEmail(email)。
问题
这两种本地运行函数的方法有什么区别?
【问题讨论】:
【参考方案1】:firebase emulators:start
是新 Firebase 模拟器套件的一部分,该套件旨在让多个模拟产品协同工作。它与firebase serve --only functions
完全不同,它基于@google-cloud/functions-emulator npm package,它没有被积极维护(点击你会看到它已被弃用)。建议您开始迁移到新的模拟器套件并远离firebase serve
。
【讨论】:
谢谢!那么firebase deploy
和firebase serve
与firebase serve --only hosting
等其他标志呢?我们还能使用它们吗?除了firebase serve --only functions
之外,还有其他什么被弃用了吗?
您可能需要查看 firebase-tools repo 上的发行说明。
我们注意到,对于一个简单的函数,serve
的速度(600ms)大约是emulate
(1200ms)的两倍。是预期的吗?为什么?
@ShaunLuttin 如果您对模拟器有任何疑问,请将您的问题发布到其 GitHub。 github.com/firebase/firebase-tools
发现这个问题很有帮助,但仍然不清楚如何在本地开发过程中将 Emulator Suite 与 React 一起使用,而无需将我的项目构建到静态文件中,因此我写了这篇关于如何在没有建筑:medium.com/@samshapiro/…以上是关于Firebase serve --only functions VS local emulator 在本地运行云功能?的主要内容,如果未能解决你的问题,请参考以下文章
firebase deploy --only 函数上出现 NPM 错误的原因是啥
相同的 Flutter Web 构建使用 `dhttp` 在本地运行,但使用 `firebase serve` 或 `firebase deploy` 失败
设置“firebase javascript”以与“ionic serve”一起使用
Groovy闭包 Closure ( 闭包的 delegate 代理策略 | OWNER_FIRST | DELEGATE_FIRST | OWNER_ONLY | DELEGATE_ONLY )