firebase - Firebase 函数不会看到 pubsub 模拟器在本地运行
问题描述
我正在尝试在本地使用 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 功能?
解决方案
经过数小时的努力,我终于设法使 pubsub 模拟器工作。
firebase 文档中没有任何内容firebase serve
,所以我猜这是一个不推荐使用的命令。我发现的只是.firebase emulators:start
我按照为模拟功能设置管理员凭据:部分中的说明进行操作。创建一个密钥并下载 json,在终端中导出变量并运行firebase emulators:start
。
那行得通,我可以看到我的登录输出。
无法确定问题出在哪里,但firebase serve
由于某种原因,您似乎无法与模拟器取得联系。如果您希望它们相互协作,您必须运行所有模拟器。
笔记:
- 如果您使用的是打字稿,请不要忘记运行
npm run build
- 创建主题时,projectId 选项应该足够了:
const pubsub = new PubSub({
projectId: "your-test-project",
});
const topic = pubsub.topic("test-pubsub");
推荐阅读
- spring-boot - HTTPOnly Cookie 中的 Spring Boot + Angular 9 JWT 令牌存储
- javascript - 将接口更改为对象类型
- python - 无法从 Flask 连接到 Postgres Docker 容器
- python - 在 PyQt 应用程序中嵌入 aiohttp 服务器
- java - 获取 SQLException:ResultSet 关闭后不允许操作
- c++ - 无法从字符串转换为模板 C2664
- facebook - 无法在开发中测试 Facebook OAuth,因为“有效 OAuth 重定向 URI”不允许 localhost
- python - 仅当标题栏未在 QDockWidget 中浮动时如何删除它
- postgresql - Hassura 容器未连接到在 localhost 上运行的 postgres
- javascript - 在计算最大值和最小值Javascript时得到错误的值