Перейти к основному содержимому

Исправление развертывания Cloud Functions

Предварительные требования
  • У вас должен быть проект Firebase, подключенный к FlutterFlow.
  • Убедитесь, что ваш проект использует тарифный план Blaze.

Cloud Functions позволяют выполнять серверный код в ответ на события, вызванные функциями Firebase, или на HTTPS-запросы. Различные ситуации могут привести к неисправности Cloud Functions, часто из-за проблем с настройкой или ошибок в коде скрипта Cloud Function.

Эта статья поможет разобраться с распространенными проблемами Cloud Functions в FlutterFlow и их решением.

Ошибки, отображаемые в FlutterFlow Builder

В FlutterFlow Builder могут возникать следующие ошибки:

  • Out of Date (Error)
  • Not Deployed (Error)

Эти ошибки могут появляться по разным причинам. Ниже приведены скриншоты этих ошибок:

Ошибка устаревшей версии

Ошибка отсутствия развертывания

Основные проверки для устранения ошибок развертывания

  1. Проверьте наличие необходимых разрешений у firebase@flutterflow.io

    Чтобы FlutterFlow работал с вашим проектом без сбоев, убедитесь, что firebase@flutterflow.io имеет следующие разрешения в вашем проекте Firebase:

    • Cloud Functions Admin
    • Editor
    • Service Account User

    Чтобы добавить эти разрешения, выполните следующие шаги:

    • Перейдите в консоль Firebase и войдите в свою учетную запись.

    • Откройте проект и перейдите в раздел Project Settings > Users and Permissions.

    • В разделе Advanced Settings Permissions найдите firebase@flutterflow.io, нажмите Edit и добавьте необходимые роли.

  2. Проверьте несоответствие имени функции

    Убедитесь, что имя функции в вашем коде точно совпадает с именем функции, определенным в FlutterFlow.

    Например, в этом случае FlutterFlow ожидает logoMaker, но в коде неверно используется data.

  3. Проверьте пользовательский код для Cloud Functions

    Незначительные ошибки в коде пользовательских Cloud Functions могут препятствовать развертыванию.

    • Дважды проверьте код на наличие ошибок.

    • Протестируйте локально с помощью IDE или Firebase CLI.

  4. Проверьте тарифный план Firebase (требуется Blaze Plan):

    • Убедитесь, что проект Firebase использует Blaze Plan, а не Spark Plan.
    • Проверьте статус оплаты в GCP. Даже если в Firebase отображается Blaze, проблемы с оплатой в GCP могут блокировать развертывание.
  5. Проверьте, развертываются ли другие Cloud Functions:

    • Если некоторые Cloud Functions (например, Push Notification или Stripe) развертываются успешно, это указывает на то, что настройка Firebase в целом правильная.
    • Сосредоточьтесь на проверке кода и конфигурации конкретной функции.
  6. Убедитесь, что выбранный регион соответствует проекту Firebase:

    • Регион, установленный для Cloud Function в FlutterFlow, должен совпадать с регионом проекта Firebase.

    • Не оставляйте регион как [default].

    подсказка

    Если вы ранее развернули функции в неправильном регионе, удалите их, установите правильный регион и разверните заново.

  7. Конфликты протоколов: HTTP против Callable Functions

    Если вы изначально развернули функцию как HTTP, а затем пытаетесь переразвернуть ее как Callable (или наоборот), возникнет эта ошибка:

    [makeUserAdmin(us-central1)] Changing from an HTTPS function to a callable function is not allowed. Please delete your function and create a new one instead.

    Чтобы исправить эту ошибку, выполните следующие шаги:

    • Удалите существующую функцию в консоли Firebase.
    • Измените тип протокола в FlutterFlow.
    • Переразверните функцию.
  8. Проверьте целостность package.json

    • Используйте сгенерированный файл package.json как есть, если не нужно добавлять дополнительные пакеты.

    • Убедитесь, что он не пустой и не содержит недопустимых символов.

      Рекомендуемая структура:

      {
      "name": "functions",
      "description": "Firebase Custom Cloud Functions",
      "engines": {
      "node": "18"
      },
      "main": "index.js",
      "dependencies": {
      "firebase-admin": "^11.8.0",
      "firebase-functions": "^4.3.1"
      },
      "private": true
      }
  9. Убедитесь, что пакеты включены в package.json

    Если вы используете сторонние пакеты (например, axios), убедитесь, что они правильно добавлены в раздел dependencies в package.json:

  10. Проверьте версии сторонних пакетов

    Версии, указанные в вашем package.json, должны соответствовать доступным версиям, перечисленным на npmjs.com.

  11. Проверьте наличие неразвернутых правил и индексов Firebase:

    • Неполные правила или индексы Firestore могут блокировать развертывание функций.
    • Убедитесь, что все правила и индексы были развернуты из FlutterFlow.

Дополнительное устранение неисправностей и оптимизация:

  • Проблемы с конфигурацией триггеров

    Если Cloud Functions не срабатывают:

    Проверьте триггеры событий:

    • Для триггеров Firestore: проверьте пути документов и имена коллекций.
    • Для HTTP-функций: убедитесь в правильной настройке в FlutterFlow.

    Проверьте разрешения и правила:

    • Правила безопасности Firebase и разрешения проекта должны разрешать операции Cloud Function.
  • Тайм-ауты выполнения

    • Cloud Functions могут завершаться с ошибкой, если время выполнения превышает лимиты.

    • Установите пользовательскую длительность тайм-аута в FlutterFlow:

      Для задач с длительной обработкой увеличьте длительность тайм-аута в конфигурации Cloud Function.

      Настройка регионов Cloud Function в FlutterFlow также может оптимизировать производительность:

      примечание

      Более длительные тайм-ауты могут увеличить затраты на Firebase.

  • Задержки холодного старта

    Cloud Functions могут отвечать медленнее после периодов неактивности:

    • Используйте Cloud Scheduler, чтобы периодически вызывать функции и поддерживать их в теплом состоянии.
    • Минимизируйте зависимости, чтобы уменьшить задержки холодного старта.

Следуя этому подробному руководству по устранению неисправностей, вы сможете решить большинство проблем, возникающих при работе с Cloud Functions.