#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).