Firebase 函数不会看到 pubsub 模拟器在本地运行
Posted
技术标签:
【中文标题】Firebase 函数不会看到 pubsub 模拟器在本地运行【英文标题】:Firebase functions won't see pubsub emulator running locally 【发布时间】:2021-06-20 06:43:56 【问题描述】:我正在尝试在本地使用 pubsub 运行 firebase 函数。
已使用firebase init emulators
配置了模拟器。
firebase emulators:start --only pubsub
工作正常,我可以看到日志:
┌──────────┬────────────────┐
│ Emulator │ Host:Port │
├──────────┼────────────────┤
│ Pub/Sub │ localhost:8085 │
└──────────┴────────────────┘
firebase.json 中的 pubsub 模拟器配置:
"pubsub":
"host": "localhost",
"port": 8085
,
一个 pubsub 处理函数被导出:
exports.testPubsub = functions.pubsub.topic("test-pubsub").onPublish(async (message) =>
console.log(`test event received by pubsub handler: $message.json`);
);
我使用以下方式运行 firebase 函数:firebase serve --only functions
此行出现在控制台输出中:
functions[pubsub-testPubsub]: function ignored because the pubsub emulator does not exist or is not running. "metadata":"emulator":"name":"functions","message":"function ignored because the pubsub emulator does not exist or is not running."
这意味着找到了函数,但由于某种原因,firebase 无法连接到 pubsub 模拟器,尽管进行了所有配置。
这是一个问题: 如何在本地机器上测试 pubsub 和 firebase 功能?
【问题讨论】:
【参考方案1】:经过数小时的努力,我终于设法让 pubsub 模拟器正常工作。
firebase docs 中没有关于 firebase serve
的内容,所以我猜这是一个已弃用的命令。我找到的只是firebase emulators:start
。
我按照为模拟功能设置管理员凭据:部分中的说明进行操作。创建密钥并下载 json,在终端中导出变量并运行 firebase emulators:start
。
这行得通,我可以看到我的登录输出。
无法确定问题出在哪里,但您似乎无法firebase serve
并出于某种原因与模拟器取得联系。如果你想让它们互相工作,你必须运行所有的模拟器。
注意事项:
-
如果你正在使用 typescript,别忘了运行
npm run build
创建主题时,projectId 选项应该足够了:
const pubsub = new PubSub(
projectId: "your-test-project",
);
const topic = pubsub.topic("test-pubsub");
【讨论】:
以上是关于Firebase 函数不会看到 pubsub 模拟器在本地运行的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 pubsub 模拟器在本地调用 firebase Schedule 函数
如何使用 pubsub 模拟器在本地调用 firebase Schedule 函数
在哪里可以检查或管理使用 Google Firebase 创建的 PubSub 主题?