Вызов функции firebase приводит к внутренней ошибке - PullRequest
0 голосов
/ 10 февраля 2020

Я вызываю простую функцию firebase из веб-приложения и получаю ВНУТРЕННЮЮ ошибку. Может кто-то предложить, пожалуйста, где я мог пойти не так.

Я видел подобные вопросы, но они не отвечают на проблему, с которой я сталкиваюсь.

Я могу подтвердить, что функция была развернута в пожарная база.

Вставив ссылку ниже в браузере, я получаю ответ. https://us-central1-cureme-dac13.cloudfunctions.net/helloWorld

index. js файл имеет код (облачные функции Firebase определены в index. js)

const functions = require('firebase-functions');

exports.helloWorld = functions.https.onRequest((request, response) => {
    response.send("Hello from Firebase!");
});

webApp. js имеет следующий код (клиент / веб-сайт)

var messageA = firebase.functions().httpsCallable('helloWorld');

messageA().then(function(result) {

  console.log("resultFromFirebaseFunctionCall: "+result)

}).catch(function(error) {
  // Getting the Error details.
  var code      = error.code;
  var message   = error.message;
  var details   = error.details;
  // ...
  console.log("error.message: "+error.message+" error.code: "+error.code+" error.details: "+error.details)
  // Prints: error.message: INTERNAL error.code: internal error.details: undefined
});

1 Ответ

1 голос
/ 10 февраля 2020

Вы смешиваете Функции вызываемого облака и Функции облака HTTPS .

Делая

exports.helloWorld = functions.https.onRequest(...)

, вы определяете функцию облака HTTPS ,

, но, выполнив

var messageA = firebase.functions().httpsCallable('helloWorld');
messageA().then(function(result) {...});

в своем клиенте / клиентском интерфейсе, вы фактически вызовете функцию вызываемого облака.


Вам следует либо изменить свое облако Для вызова вызываемой функции или вызова / вызова облачной функции helloWorld HTTPS, отправив HTTP-запрос GET на URL-адрес функции облака (аналогично тому, как вы это делали в браузере, «вставив ссылку https://us-central1-cureme-dac13.cloudfunctions.net/helloWorld в браузере»). ).

Например, используя библиотеку Ax ios, вы должны сделать:

axios.get('https://us-central1-cureme-dac13.cloudfunctions.net/helloWorld')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...