Как решить TypeError: functions.https.onCall не является функцией?

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

Вчера я узнал о вызываемых облачных функциях, поэтому решил попробовать app, чтобы узнать, следует ли мне обновлять существующие функции или нет. Я создал простую облачную функцию для тестирования:

exports.testCall = functions.https.onCall((data, context) =>{
    console.log(context.auth.uid);
    return {response:"This means success"};
});

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

Ошибка: произошла ошибка при разборе триггеров вашей функции.

TypeError: functions.https.onCall не является функцией объекта Object. (/tmp/fbfn_7614ijhDwX0NY98S/index.js:114:36) в Module._compile (module.js: 649: 30) в Object.Module._extensions..js (module.js: 660: 10) в Module.load ( module.js: 561: 32) в tryModuleLoad (module.js: 501: 12) в Function.Module._load (module.js: 493: 3) в Module.require (module.js: 593: 17) в require ( internal / module.js: 11:18) в /usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:18:11 в Object. (/usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:32:3)

Я знаю, что вызываемые облачные функции были представлены в последней версии Firebase SDK, поэтому я попытался обновить ее, используя:

sudo npm install -g firebase-tools

Но я пока не могу развернуть свою облачную функцию. Я также пробовал частичное развертывание, как показано в документации Firebase, но это не сработало. Что-то мне не хватает в документации?


person Rosário Pereira Fernandes    schedule 22.03.2018    source источник
comment
Вызываемые функции были представлены в узле SDK версии 0.9.0 firebase-functions. github.com/firebase/firebase-functions/releases/tag/v0. 9.0   -  person Doug Stevenson    schedule 22.03.2018


Ответы (1)


Простое обновление интерфейса командной строки Firebase не решит проблему, поскольку вам также необходимо обновить SDK Cloud Functions в каталоге проекта. Вы упомянули, что проект Firebase был инициализирован в начале этого года, так что это до выпуска Callable Cloud Functions.

Видите ли, когда вы запускаете облачные функции в своем проекте Firebase, он создает каталог functions, содержащий SDK облачных функций. Таким образом, у вас (вероятно) все еще есть старый SDK в каталоге functions, и вам нужно его обновить. Для этого перейдите в этот каталог и выполните команду:

sudo npm i --save firebase-functions@latest
person Rosário Pereira Fernandes    schedule 22.03.2018
comment
К вашему сведению, мне пришлось обновить пакет firebase-functions локально в каталоге функций - person DecentGradient; 16.09.2018