我希望能够在 Firebase 模拟器中本地测试我的云功能,让它从 Firebase 云环境中的实际主题(而不是来自 Firebase PubSub 模拟器)接收消息。
我已将 GOOGLE_APPLICAITON_CREDENTIALS 环境变量配置为指向我的管理员凭据,如下所述:https://firebase.google.com/docs/functions/local-emulator#set_up_admin_credentials_optional
我的 Firebase 功能应用程序如下所示:
initializeApp();
export const playBillingMessageReceived : CloudFunction<CloudEvent<MessagePublishedData>>
= onMessagePublished(PLAY_BILLING_TOPIC, messagePublishedPlayBillingHandler);
当我执行
firebase emulators:start --only functions
时,模拟器启动,但控制台显示:
+ functions: Loaded functions definitions from source: playBillingMessageReceived.
i functions[us-central1-playBillingMessageReceived]: function ignored because the pubsub emulator does not exist or is not running.
我的函数从未收到发布到我的主题的消息。
如何让 Firebase 模拟器中的函数连接到云中的主题并接收来自云中主题的消息?
您无法通过发布到 Cloud Pub/Sub 中非模拟主题的消息来触发在模拟器中运行的 Firebase Cloud Function。如文档中所述:
Cloud Functions 模拟器支持以下来源的后台触发函数:
- 实时数据库模拟器
- Cloud Firestore 模拟器
- 身份验证模拟器
- Pub/Sub 模拟器