【问题标题】:Firebase functions won't see pubsub emulator running locallyFirebase 函数不会看到 pubsub 模拟器在本地运行
【发布时间】: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 功能?

【问题讨论】:

    标签: firebase google-cloud-pubsub


    【解决方案1】:

    经过数小时的努力,我终于设法让 pubsub 模拟器正常工作。

    firebase docs 中没有关于 firebase serve 的内容,所以我猜这是一个已弃用的命令。我找到的只是firebase emulators:start

    我按照为模拟功能设置管理员凭据:部分中的说明进行操作。创建密钥并下载 json,在终端中导出变量并运行 firebase emulators:start

    这行得通,我可以看到我的登录输出。

    无法确定问题出在哪里,但您似乎无法firebase serve 并出于某种原因与模拟器取得联系。如果你想让它们互相工作,你必须运行所有的模拟器。

    注意事项:

    1. 如果你正在使用 typescript,别忘了运行npm run build
    2. 创建主题时,projectId 选项应该足够了:
    const pubsub = new PubSub({
      projectId:  "your-test-project",
    });
    const topic = pubsub.topic("test-pubsub");
    

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 2020-10-30
      • 2018-05-11
      • 2020-07-23
      • 2021-12-17
      • 2019-11-14
      • 2020-07-29
      • 1970-01-01
      相关资源
      最近更新 更多