2016-12-11 2 views
2

Я установил и запустил администратор firebase на моем сервере узлов, он работает хорошо до сегодняшнего дня, нет никакой ошибки, чтобы сказать, что произошло, оно просто перестает работать.Больше не фиксирует событие из firebase по Admin SDK

var admin = require("firebase-admin"); 

      var serviceAccount = require("mycom-firebase-adminsdk-d1ebt123456.json"); 

      var app = FireBaseAdapter.admin.initializeApp({ 
       credential: FireBaseAdapter.admin.credential.cert(serviceAccount), 
       databaseURL: "https://xxxx.firebaseio.com" 
      }); 

var db = app.database(); 
var ref = db.ref("messages"); // this node actually exists in my db. 


ref.on("value", function(snapshot) { 
// this will never be called - which has been working before. 

    console.log(snapshot.val()); 
}, function (errorObject) { 
    console.log("The read failed: " + errorObject.code); 
}); 

Я даже заворачиваю его в попытке поймать, чтобы распечатать ошибку, но ее нет. Я могу войти в консоль firebase в учетной записи и увидеть мою базу данных без изменений (небольшая база данных) (хотя кажется, что она медленнее, чем обычно). Есть ли что-то не так с firebase Admin SDK? Любая помощь приветствуется.

+0

Я просто проверил и все еще могу прочитать из одной из моих баз данных учетные данные администратора, аналогично тому, как это делает ваш код. Я пробовал с версией 4.0.0 и 4.0.4. Поэтому я не думаю, что есть общий сбой в любом месте и сразу очевидная ошибка в SDK администратора. –

+0

Он внезапно перестает работать, он все равно подключается к db каким-то образом, но событие «on value» больше не срабатывает. Однако ошибок в устранении неполадок нет. –

ответ

4

Проведя много часов, чтобы узнать причину, я нашел проблему. Поскольку я не мог найти способ, чтобы включить журнал firebase-администратора, так что это был тупик, чтобы устранить проблему, пока все работает тихо, поэтому я перешел на использование пакета firebase иметь протоколируемой

var firebase = require("firebase"); 
firebase.initializeApp({ 
    databaseURL: "https://xxxxx.firebaseio.com", 
    serviceAccount: '....' 
}); 

firebase.database.enableLogging(true); // <=== important 

Моего вопрос очень похож на this question

тогда я мог видеть фактическую ошибку:

p:0: Failed to get token: Error: Error refreshing access token: invalid_grant (Invalid JWT: Token must be a short-lived token and in a reasonable timeframe)

решения этой проблемы было объяснено на this anwser. Эта проблема вызвана плохой синхронизацией часов компьютера, когда код был выполнен с задержкой в ​​5 минут (из-за неисправной батареи для внутренних часов). Он снова начал работать, когда я вручную изменил внутреннее время моего компьютера на правильный (или полностью сбросил дату компьютера).

В моем случае после сброса часового пояса datetime &, firebase автоматически работает снова, и мне не нужно повторно создавать другую учетную запись службы.

+0

Хорошо поймать Тельвин! –

Смежные вопросы