#api #google-cloud-firestore #firebase-admin
#API #google-cloud-firestore #firebase-admin
Вопрос:
У меня есть API узла, который использует firebase-admin для обработки данных firestore. Это не было проблемой еще несколько дней назад, и теперь это начало происходить.
Странно то, что я, похоже, получаю это только на своем рабочем сервере, а не в локальной среде разработки (даже используя ту же базу данных).
Я попытался повторно развернуть, перезапустить сервер, проверил конфигурацию базы данных и все, и ничего не сработало.
Это одна из более подробных ошибок:
Error: 14 UNAVAILABLE: Getting metadata from plugin failed with error: URL is not a constructor
at Object.exports.createStatusError (/root/apps/api/src/node_modules/grpc/src/common.js:91:15)
at Object.onReceiveStatus (/root/apps/api/src/node_modules/grpc/src/client_interceptors.js:1204:28)
at InterceptingListener._callNext (/root/apps/api/src/node_modules/grpc/src/client_interceptors.js:568:42)
at InterceptingListener.onReceiveStatus (/root/apps/api/src/node_modules/grpc/src/client_interceptors.js:618:8)
at callback (/root/apps/api/src/node_modules/grpc/src/client_interceptors.js:845:24)
И это мой файл подключения:
import * as admin from 'firebase-admin'
import serviceAccount from './fbAdminKey'
admin.initializeApp({
projectId: '<myProjectId>',
credential: admin.credential.cert(serviceAccount),
databaseURL: '<myDbURL>'
})
const db = admin.firestore()
const messaging = admin.messaging()
const auth = admin.auth()
export default { db, messaging, auth }
Он должен иметь возможность просто подключаться к базе данных и выполнять операции, у меня есть приложение, веб-приложение, и все они работают нормально, просто API узла, похоже, ведет себя странно.
Комментарии:
1. На самом деле это не ответ, но я могу подтвердить, что то же самое происходит на моей стороне. Используете ли вы версию узла
6.11.5
локально? Это версия, которую использует рабочий сервер, и я могу правильно запускать ее локально только в более высоких версиях (8.x). Голосование, поскольку у меня такая же ошибка, и я попытаюсь написать ответ, как только что-нибудь придумаю2. Да, у меня тоже есть это осознание. У меня есть узел 8 локально (работает нормально) и узел 6 на сервере. Я попытался изменить версию на сервере и получил некоторые проблемы с некоторыми двоичными файлами… Как только я смогу заставить его работать там, я это подтвержду, но я почти уверен, что это как-то связано с версией узла. Кстати, сегодня я получил электронное письмо от команды firebase, в котором сообщается об устаревании node 6 в облачных функциях, что также подтверждает теорию. Так что да, это то, что я могу сказать сейчас, надеюсь, мы сможем это исправить.
Ответ №1:
Итак, после того, как я почти неделю ломал голову над другими проблемами и прочим, я смог разобраться с этим с помощью всех присутствующих.
Проблема заключалась в node.js версия
Я запускал узел 8.4.0
локально и узел 6.x.x
на производстве. (firebase-admin 7.0.0)
Поэтому я обновил его при использовании в рабочей nvm
среде, и у меня возникла другая проблема, связанная с grpc
версией. У меня была установлена более новая версия, и для нее требовалась более старая.
Примечание
Если вы используете PM2
, обязательно обновите его:
http://pm2.keymetrics.io/docs/usage/update-pm2/
После этого он снова начал работать, и все вернулось на круги своя.
Ответ №2:
Не точное решение, потому что оно не решает проблему с узлом 6.11.5.
Рабочий сервер по умолчанию запускается на узле 6.11.5, и если вы хотите изменить версию среды выполнения на 8, обратитесь к этой статье .
https://firebase.google.com/docs/functions/manage-functions#set_runtime_options
Однако имейте в виду, что эта версия среды выполнения в настоящее время находится в бета-версии, поэтому она может сломаться.
Я также заметил, что мне удалось избавиться от этой ошибки, с которой вы столкнулись, установив предыдущую версию firebase-admin
( 6.2.0
если быть точным, на данный момент — версия 7.x.x
является последней).
Я боюсь, что одна из новых версий firebase-admin нарушила эту функцию в некоторых средах, и именно поэтому эта проблема встречается не так часто.