Ответ 1
Быстрый совет. Убедитесь, что вы экспортируете функцию, которую вы пытаетесь развернуть, в файле index.js. Ваш проект firebase будет развернут, но облачные функции будут недоступны, если они не экспортированы.
Я выполнил следующие шаги:
Firebase CLI (интерфейс командной строки) требует Node.js и npm, которые вы можете установить, следуя инструкциям на https://nodejs.org/
После установки Node.js и npm установите интерфейс командной строки Firebase через npm: npm install -g firebase-tools
Инициализируйте ваш проект:
а. Запустите firebase login
чтобы войти через браузер и аутентифицировать инструмент firebase.
Перейдите в каталог проекта Firebase или создайте каталог.
с. Запустите функции инициализации firebase
Выберите связанный проект Firebase
Выберите Y
чтобы установить зависимости с помощью npm.
Перейдите в каталог настройки функций firebase
Отредактируйте файл index.js
с помощью созданной вами функции
Запустите firebase use --add
чтобы добавить свой проект Firebase.
Запустите firebase deploy --only functions
для развертывания функции
После всего этого я получаю сообщение в терминале при развертывании было завершено, но в консоли Firebase, когда я нажимаю на вкладку Функции, в списке нет функций !?
Быстрый совет. Убедитесь, что вы экспортируете функцию, которую вы пытаетесь развернуть, в файле index.js. Ваш проект firebase будет развернут, но облачные функции будут недоступны, если они не экспортированы.
На шаге 7 вы должны раскомментировать функцию выборки и сохранить файл. Затем в выводе команды deploy вам будет предоставлен URL-адрес созданной функции helloWorld.
Убедитесь, что вы сохранили файл после раскомментирования функции по умолчанию, а затем используйте
firebase deploy
Убедитесь, что вы используете хотя бы версию 3.5.0
firebase-tools
. Чтобы проверить, какая версия у вас есть, запустите:
firebase --version
Если вы используете настройку по умолчанию, вы можете обновить firebase-tools
, используя:
npm install -g firebase-tools
У меня была точно такая же проблема, и я решил ее, убедившись, что файл index.js, содержащий все мои функции, был сохранен в папке "функции" внутри папки проекта. Я использую vs-код, поэтому я просто нажал на файл/сохранить как и выбрал правильную папку.
Недавно я столкнулся с той же проблемой, выполняя Действия в Руководстве по миграции клиентской библиотеки Google Node.js версии 1. в Node.js Client Library V2 (что я очень рекомендую) Мне понадобилось время, чтобы понять, что происходит. На самом деле я не мог понять, в чем проблема! Итак, вот что я сделал, и это сработало для меня:
Убедитесь, что у вас есть резервная копия ваших облачных функций (index.js
) и, возможно, ваш package.json
(на тот случай, если вы не хотите помнить, какие пакеты вы ранее установили - иногда это может раздражать).
Удалите весь каталог функций из папки вашего проекта.
Перезапустите firebase CLI с помощью firebase init
и выберите " Функции".
После того, как ваша функция облака инициализирована, CD в папку функций и развернуть его с помощью firebase deploy --only functions
.
Если все идет хорошо you, вы должны увидеть, как ваша функция развернута на консоли панели управления firebase.
Примечание: Google недавно выпустил Node.js Client Library version 2 (v2)
16 апреля 2018 года с множеством новых функций. После 16 апреля 2018 года новые функции в Действиях в Google больше не будут добавляться в v1 клиентской библиотеки. Если вы хотите использовать новые функции, вы должны перейти на клиентскую библиотеку v2.
Кроме того, клиентская библиотека v1 не поддерживает Dialogflow v2. Если вам нужна функциональность Dialogflow v2, вам также необходимо перейти на v2 клиентской библиотеки.
Надеюсь, это поможет 👍.
Чтобы прояснить одну проблему - кажется, что ваш файл index.js
внутри папки functions
должен экспортировать функции, созданные в том же файле (аналогично тому, что сказал Фрэн).
Кажется, пытается организовать файлы в подпапках не будут работать должным образом с Firebase функциями - одни и те же правила применяются для использования firebase serve
для тестирования локально (необходимо создать codeinside functions/index.js
).
Надеюсь, это поможет кому-то!
1) Убедитесь, что вы экспортируете функцию, которую пытаетесь развернуть в своем файле index.js.
2) Напишите "use-strict" вверху вашего файла (index.js), а затем используйте консоль для развертывания вашей функции.
Проверьте ваш "проект по умолчанию" в initbase firebase. Выбор с похожим именем был моей ошибкой. ;)
Была такая же ситуация. Проблема была в том, что когда я делал
$ firebase deploy --only "myFunction"
Имя этого фильтра: myFunction
, не совпадало с именем функции, которую я пытался развернуть. Глупая ошибка, но мне потребовался день, чтобы понять...
Используйте firebase projects:list
и firebase use <project>
, чтобы убедиться, что "текущий проект" Firebase CLI настроен правильно, независимо от того, в какой папке вы находитесь.
Пример:
> firebase projects:list
✔ Preparing the list of your Firebase projects
┌──────────────────────┬─────────────────────┬──────────────────────┐
│ Project Display Name │ Project ID │ Resource Location ID │
├──────────────────────┼─────────────────────┼──────────────────────┤
│ alpha │ alpha (current) │ [Not specified] │
├──────────────────────┼─────────────────────┼──────────────────────┤
│ beta │ beta │ [Not specified] │
└──────────────────────┴─────────────────────┴──────────────────────┘
2 project(s) total.
> firebase use beta
Now using project beta