Я перехожу на веб-модульный API JavaScript из пространства имен JavaScript (compat). Мой код представляет собой функцию Firebase с http-триггером, работающим на GCP, поэтому код «живет» в инфраструктуре GCP. Я думаю, что из-за этого мне не нужно указывать кучу данных для инициализации приложения и базы данных, что было бы в том случае, если бы мой код работал на ReactJS или любой другой интерфейсной платформе.
В моем старом коде я просто инициализировал приложение в файле с именем firebase-db, который подключался везде, где это было необходимо. Это также дало мне доступ к базе данных. Дескриптор базы данных больше не нужен при использовании модульного API.
// This is the old namespaced code
const admin = require("firebase-admin");
const app = admin.initializeApp();
const database = admin.database(app);
module.exports = database;
В моем новом коде этого файла нет, и я просто использую приведенный ниже код в своих файлах.
const { ref, getDatabase, get } = require("firebase/database");
...
Однако это не работает. Я получаю сообщение об ошибке, в котором четко указано, что «Приложение» необходимо инициализировать.
FirebaseError: Firebase: приложение Firebase «[DEFAULT]» не создано — сначала вызовите InitializeApp() (приложение/нет-приложение)
Мой новый файл firebase-db выглядит так; Но это не работает:
// This is the new modular code
const { initializeApp } = require("firebase-admin");
const { getDatabase } = require("firebase/database");
const app = initializeApp(); //<-- This line generates an error!
const database = getDatabase(app);
module.exports = database;
Вызов initializeApp(); генерирует ошибку:
Ошибка типа: невозможно прочитать свойство INTERNAL неопределенного значения.
Я начал изучать документацию, но не нашел хороших примеров инициализации приложения, чтобы получить дескриптор Dabase с помощью getDatabase().
https://firebase.google.com/docs/database/admin/retrieve-data#node.js_19https://firebase.google.com/docs/database/web/read-and-write#web-modular-api_5https://firebase.google.com/docs/reference/js/database.md#equalto_51c2c8b
Любая помощь очень ценится! /К



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Веб-SDK Firebase не заменяют Firebase-admin. На бэкэнде вам все равно придется использовать Firebase-admin и его обычный API. Для Firebase-admin не существует «модульного» API.
Чтобы быть более конкретным:
О, нет! Я понимаю. Я был вынужден обновить свой интерфейс до модульного API, и теперь существует несогласованность в написании кода для внешнего и внутреннего интерфейса. Это БЫЛО одним из больших преимуществ использования JavaScript. Не слишком этому рад. Почему бы не использовать модульную систему и для серверной части? /К