簡體   English   中英

Firebase 函數不會看到 pubsub 模擬器在本地運行

[英]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並與模擬器取得聯系。 如果您希望它們相互協作,您必須運行所有模擬器。

筆記:

  1. 如果您使用的是 typescript,請不要忘記運行npm run build
  2. 創建主題時,projectId 選項應該足夠了:
const pubsub = new PubSub({
  projectId:  "your-test-project",
});
const topic = pubsub.topic("test-pubsub");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM