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

Я использую 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: v8.89.0

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


person Srividya K    schedule 26.08.2020    source источник
comment
Если вы создаете json в своих запросах, я считаю, что вы могли неправильно установить атрибуты json, возможно, их нужно писать по-другому (проверьте заглавные буквы или опечатки). Также все клиентские API отправляют запрос на определенные конечные точки, если вы можете попытаться отправить конкретный запрос на конечную точку, вам будет проще проверить, что не работает в вашем json (в основном я бы проверил свой запрос и убедился, что поля, необходимые для него, являются правильными)   -  person Luis Manuel    schedule 28.08.2020


Ответы (1)


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

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

firebase deploy --only functions --debug

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

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

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

functions.handler.https.onRequest

to

functions.https.onRequest

Решил проблему для меня.

person Todd Lee    schedule 30.08.2020
comment
Спасибо! Это помогло. Я уже изменил functions.handler.https.onRequest на functions.https.onRequest, так что раньше это работало. Но функция для отправки счета была functions.handler.firestore.document.onCreate, которая больше недействительна (согласно журналу отладки), поэтому изменение ее на functions.firestore.document(path).onCreate сработало. - person Srividya K; 01.09.2020
comment
Я не знаю, почему они еще не удалили функции обработчика из экспорта и типизации, если они больше не поддерживаются. - person Srividya K; 01.09.2020
comment
Я зарегистрировал проблему с расширением: github.com/stripe/stripe-firebase- extensions/issues/54 Достаточно интересно, похоже, что это различие между тем, как функции firebase работают для «расширений», и тем, как они создаются непосредственно разработчиками для развертывания через интерфейс командной строки firebase. - person Todd Lee; 02.09.2020
comment
Это проясняет это. Тем не менее, это не кажется таким уж хорошим дизайном, потому что это усложнит работу разработчиков, которые хотят его настроить, поскольку мы не сможем вносить быстрые изменения, вам не кажется? - person Srividya K; 02.09.2020
comment
У меня аналогичная проблема с functions.auth.handler.user.onDelete, которая должна быть functions.auth.user().onDelete - person user2249567; 13.11.2020