![](/img/trans.png)
[英]How to invoke firebase Schedule functions locally using pubsub emulator
[英]Firebase functions won't see pubsub emulator running locally
我正在尝试在本地使用 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 处理程序 function 被导出:
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
此行出现在控制台 output 中:
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."}}
这意味着找到了 function 但由于某种原因 firebase 无法连接到 pubsub 模拟器,尽管有所有配置。
这里是一个问题:如何在本地机器上测试 pubsub 和 firebase 功能?
经过数小时的努力,我终于设法使 pubsub 模拟器工作。
firebase 文档中没有关于firebase serve
的内容,所以我想这是一个不推荐使用的命令。 我发现的只是firebase emulators:start
。
我按照为模拟功能设置管理员凭据:部分中的说明进行操作。 创建一个密钥并下载 json,在终端中导出变量并运行firebase emulators:start
。
那行得通,我可以看到我的登录输出。
不能确定是什么问题,但看起来你不能firebase serve
并与模拟器取得联系。 如果您希望它们相互协作,您必须运行所有模拟器。
笔记:
npm run build
const pubsub = new PubSub({
projectId: "your-test-project",
});
const topic = pubsub.topic("test-pubsub");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.