ошибка firebase-admin — Auth: ошибка TypeError: URL не является конструктором

#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 нарушила эту функцию в некоторых средах, и именно поэтому эта проблема встречается не так часто.