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

#firebase #google-cloud-firestore #google-cloud-functions #firebase-tools

#firebase #google-cloud-firestore #google-cloud-функции #firebase-tools

Вопрос:

Я использую в своем проекте облачную функцию stripe-firestore-invoices. Мне нужно было настроить его в соответствии с моим вариантом использования, поэтому вместо установки расширения я загрузил исходный код и попытался развернуть. Однако функция отправки счета (это функция обработчика firestore) не развертывается и выдает следующую ошибку:

 !  functions: failed to create function devInvoice-sendInvoice
HTTP Error: 400, Invalid JSON payload received. Unknown name "children" at 'function': Cannot find field.
Invalid JSON payload received. Unknown name "exit" at 'function': Cannot find field.
Invalid JSON payload received. Unknown name "message" at 'function': Cannot find field.
  

Я использую последнюю версию firebase-tools : v8.9.0

Я попытался обновить зависимости до их последних версий:

firebase-functions : v3.11.0
firebase-admin : v9.1.1
stripe : версия 8.89.0

Все та же ошибка сохраняется.

Комментарии:

1. Если вы создаете json в своих запросах, я полагаю, что вы могли неправильно настроить атрибуты json, возможно, их нужно записать по-другому (проверьте заглавные буквы или опечатки) Также все клиентские API отправляют запрос на определенные конечные точки, если бы вы могли попытаться отправить конкретный запрос на конечную точку, вам было бы проще проверить, что не удается в вашем json (в основном, я бы проверил свой запрос и убедился, что поля, необходимые для него, являются правильными)

Ответ №1:

Забавно — я столкнулся с этим, потому что я делал точно то же самое (только в моем случае, используя firestore-stripe-subscriptions).

Если вы выполните следующее, это даст ключ к сообщению об ошибке:

 firebase deploy --only functions --debug
  

Проблема заключается в отсутствующем триггере.

Как ни странно, я обнаружил, что основной причиной, по-видимому, является ошибка в источнике Stripe (по крайней мере, это то, что, по-видимому, блокирует мое развертывание …)

Изменение обработчика https с:

 functions.handler.https.onRequest
  

Для

 functions.https.onRequest
  

Для меня проблема решена.

Комментарии:

1. Спасибо! Это помогло. Я уже изменил functions.handler.https.onRequest на functions.https.onRequest, так что это работало раньше. Но функцией для отправки счета была функция functions.handler.firestore.document.onCreate, которая больше не действительна (согласно журналу отладки), поэтому измените ее на functions.firestore.document (путь). onCreate сработал.

2. Я не знаю, почему они еще не удалили функции-обработчики из экспорта и типизации, если это больше не поддерживается.

3. Я зарегистрировал проблему с расширением: github.com/stripe/stripe-firebase-extensions/issues/54 Интересно, что, похоже, это различие между тем, как функции firebase работают для «расширений», и тем, как они создаются непосредственно разработчиками для развертывания через firebase CLI.

4. Это проясняет ситуацию. Однако, это не кажется таким уж отличным дизайном, потому что это усложнило бы разработчикам, которые хотят его настроить, поскольку мы не сможем вносить быстрые изменения, не так ли?

5. У меня аналогичная проблема с functions.auth. обработчик.user.OnDelete, который должен быть functions.auth.user().OnDelete