как использовать облачную функцию firebase pubsub.schedule?

#firebase #google-cloud-functions #firebase-cli

# #firebase #google-cloud-функции #firebase-cli

Вопрос:

Сегодня появилась новая функция облачных функций для Firebase, которая заключается в выполнении функций по расписанию. Итак, я попытался протестировать пример кода.

index.js файл

 exports.scheduledFunction = functions.pubsub.schedule(‘every 5 minutes’).onRun((context) => {
  console.log(‘This will be run every 5 minutes!’);
});
 

Но когда я попытался развернуть это, я получил следующее сообщение об ошибке:


 Error: Error occurred while parsing your function triggers.

TypeError: functions.pubsub.schedule is not a function
 

Моя версия firebase tools 6.7 (обновлена сегодня)

Каково решение?

Я проверил пример git-кода здесь (https://github.com/firebase/functions-samples/blob/master/delete-unused-accounts-cron/functions/index.js)

Но это также вызывает ту же ошибку:

functions.pubsub.schedule не является функцией

Кто-нибудь может мне помочь с этой проблемой?

 const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
   console.log('This will be run every 5 minutes!');
});
 

Ответ №1:

В сообщении в блоге указывается, что версия модуля firebase-functions также должна быть не менее 2.3.0. Запустите npm install firebase-functions@latest в папке functions, чтобы обновить ее, затем снова создайте и разверните.

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

1. Это исправило проблему для меня. Если это тоже исправило вашу проблему @SssSteve, это должен быть принятый ответ.

2. Это сработало для меня. Устанавливается в корневую папку функций.

3. Я получил эту ошибку functions[scheduledFunction]: функция игнорируется, потому что pubsub.googleapis.com эмулятор не существует или не запущен.

4. Я использую «firebase-functions»: «^ 3.3.0», но у меня все еще возникает эта проблема

Ответ №2:

Вот документация https://firebase.google.com/docs/functions/schedule-functions

 export const scheduledFunction = functions.pubsub.schedule('every 5 minutes')
.timeZone('Asia/Jakarta')
.onRun((context) => {
    console.log('This will be run every 5 minutes!');
});
 

И вы можете установить часовой пояс в качестве дополнительного

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

1. Вообще не связано

Ответ №3:

У меня была такая же проблема.

Мне пришлось обновить свою firebase-tools до версии ^6.7.2 . Я также обновил firebase-functions , но это само по себе не справилось с задачей. Поэтому я бы обновил все зависимости firebase (firebase-tools / admin / functions).