Облачные функции GCP не ищут function.js

# #node.js #google-cloud-platform #google-cloud-functions

Вопрос:

Согласно документу GCP

Облачные функции будут искать файлы с конкретными именами для развертываемых функций. Для Node.js, эти имена файлов являются index.js или function.js.

Источник: https://cloud.google.com/sdk/gcloud/reference/functions/deploy#—source

В моем function.js досье у меня есть:

 exports.myFunction = async (req, res) => {}
 

И я развертываюсь с помощью этой команды:

 gcloud functions deploy myFunction --entry-point=myFunction 
  --region=us-central1 --project=my-gcp-project
 

Это вызывает эту ошибку

 Function 'myFunction' is not defined in the provided module.
Did you specify the correct target function to execute?
Could not load the function, shutting down.
Error: function terminated. Recommended action: inspect logs for termination reason.
 

Как ни странно, развертывание работает, если я переименую function.js index.js его .

Кто-нибудь знает, чего мне здесь может не хватать?

Ответ №1:

Следуя рекомендуемой структуре, вам необходимо импортировать все методы из соответствующих модулей и реэкспортировать их в index.js файл, чтобы виртуальный образ мог найти и привязать их к соответствующим функциям. Без этого ваши функции могли бы быть просто дополнительным кодом, который используется в других методах, поскольку Firebase не может определить разницу.

Я предлагаю ознакомиться со следующей документацией: