1

使用具有Firebase功能的Node.js管理員SDK每當我嘗試訪問實時數據庫時,都會收到超時值。只有在本地測試功能(firebase serve --only functions,hosting)和使用functions.config().firebase初始化默認應用程序時纔會發生此情況。Firebase Node.js管理員嘗試訪問實時數據庫時的SDK超時

這是一種新行爲,僅在幾天前開始。但是,如果我嘗試使用serviceAccount.json文件初始化默認應用程序,則所有內容都按預期工作。

我使用firebase-admin版本4.2.1 版本firebase-functions0.5.9

我寫了一個直線前進http triggered函數失敗由於超時:

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 

admin.initializeApp(functions.config().firebase); 
const db = admin.database(); 

exports.testDbConnection = functions.https.onRequest((req, res) => { 
    return admin.database().ref().once('value') 
    .then(function(snapshot) { 
     res.json(snapshot); 
    }).catch(function(error) { 
     res.json(error); 
    }); 
}); 
+0

你可以嘗試設置'GOOGLE_APPLICATION_CREDENTIALS'環境變量指向您的服務帳戶JSON文件? –

+0

是的,這是我所做的解決實時數據庫超時。我真的想知道是否應該提出一個在firebase admin/functions SDK中的錯誤。 –

回答

0

從文檔

始終結束與發送(一個HTTP功能),重定向()或端部( )。否則,你的函數可能會繼續運行,並通過系統

看到https://firebase.google.com/docs/functions/http-events#terminate_http_functions

+0

謝謝你的回答,但'res.json()'和res.send是一樣的,除了發送響應爲JSON而不是文本。我已經諮詢了文檔,並且如前所述,直到幾天前,所有的工作都很順利,沒有對代碼做任何修改。 –

0

這可能取決於firebase-tools版本,您使用的是被強行終止,但看起來很熟悉這個Github issue

解決方案是升級到最新版本的CLI或使用解決方法解決方案:

  1. 轉到https://cloud.google.com/console/iam-admin/serviceaccounts
  2. 單擊「創建服務帳戶」,爲其命名(例如,模擬器),給它項目>所有者角色。檢查「提供一個新的私鑰」,選擇「JSON」。
  3. 某處將文件保存在您的計算機
  4. 運行export GOOGLE_APPLICATION_CREDENTIALS="absolute/path/to/file.json"
  5. 運行在firebase serve --only functions
+0

感謝您的幫助,這確實是我爲解決當前錯誤所做的工作 –

相關問題