Облачные функции для ошибки Firebase: "400, изменение типа триггера функции или поставщика событий запрещено"

Когда я запускаю firebase deploy я получаю это сообщение об ошибке:

functions: HTTP Error: 400, Change of function trigger type or event provider is not allowed

Ответ 1

TL; DR

firebase functions:delete yourFunction

объяснение

По сути, Cloud Functions ожидает один и тот же триггер для каждой функции все время, то есть после того, как она создана, она должна придерживаться своего исходного триггера, потому что каждое имя функции связано с определенным триггером. Поэтому триггер можно изменить, только сначала удалив функцию, а затем создав ее снова с другим триггером.

Теперь это можно легко сделать с помощью functions:delete команда functions:delete:

firebase functions:delete yourFunction

Документация также содержит более продвинутые варианты использования.

Старое решение

Решением этой проблемы является комментирование или отключение вашей функции, а затем сохранение файла функций и его развертывание. Функция будет удалена в Firebase, но после этого вы можете вставить/раскомментировать свою функцию, и она снова будет нормально развернута. Эта ошибка возникает, когда вы берете функцию и изменяете тип триггера, который она использует, то есть HTTP, базу данных или аутентификацию.

Сначала вырежьте это

/* exports.yourFunction = someTrigger... */

А затем, после развертывания ("развертывание firebase"), замените ваш триггер

exports.yourFunction = anotherTrigger...

Ответ 2

Для тех, кто сталкивается с этим в будущем, консоль Cloud Functions теперь предлагает кнопку удаления. screenshot of the right hand side's "more" options

Ответ 3

Вы также можете перейти на панель "Облачные функции" в консоли Google Cloud Platform и удалить свою функцию оттуда. После этого вы можете загрузить функцию в обычном режиме из командной строки Firebase. Не уверен, почему у них нет функции удаления в консоли Firebase.