Недавно я взял на себя и начал поддерживать проект firebase. При попытке развернуть новые функции после редактирования в облаке «firebase init» скомпилировала и удалила существующие функции онлайн, но не загрузила новые.

Вывод и решение:

Получив исходную папку, сначала создайте пустой проект, затем запустите «firebase login» и «firebase init» соответственно для создания шаблона проекта, а затем замените пустые файлы своими.

Описание:

Мне прислали исходную папку в следующей структуре:

functions
-> index.js
-> package-lock.json
-> package.json
-> serviceAccountKey.json

Используя Visual Studio, чтобы открыть эту старую версию, я затем настроил проект с помощью «firebase init». Когда меня спросили, что производить, я выбрал Firestore и Functions. Затем инструменты firebase создали новую подпапку с именем «функции». Сейчас проект выглядит так:

functions
-> node_modules
-> .eslintrc.js
-> .firebaserc
-> .gitignore
-> firebase.json
-> firestore.indexes.json
-> firestore.rules
-> index.js
-> package-lock.json
-> package.json
-> serviceAccountKey.json
-> functions
    -> node_modules
    -> index.js
    -> .gitignore
    -> index.js
    -> package0lock.json
    -> package.json

Я заметил наличие почти клонированной подпапки «функции». Быстрый поиск в Интернете Мне сказали, что это автоматически сгенерированная подпапка, которая не повлияет на проект, поэтому я оставил ее в покое и запустил «firebase deploy».

Развертывание прошло гладко. Мне было предложено, что в облаке есть существующие функции, и если я хочу удалить их, прежде чем загружать новую.

Подтвердив да, команда приступила к выполнению и вскоре сообщила, что она завершена. Однако, когда я обновил консоль Firebase, часть облачных функций теперь была пустой. Затем я вызвал «firebase functions:log», он показывает, что процесс завершился со статусом 200, но только запись об удалении функций.

Это означает, что процесс связи полностью исправен, но никакие функции не экспортируются полностью. На данный момент мы должны подозревать, что указатель развертывания на самом деле установлен на functions/functions/index.js, а не на functions/index.js.

После копирования содержимого настоящего index.js в пустой функции успешно развертываются, подтверждая предположение.

P.S. Не подозревая об этой возможности, я потратил два дня на проверку правил безопасности firebase и rest-api в приложении и не нашел ошибок.