Ошибка облачной функции с исключением: внутреннее, без кода в приложении Flutter - PullRequest
1 голос
/ 21 июня 2020

У меня есть очень простой код, чтобы просто протестировать облачные функции в моем приложении Flutter вместе с Firestore Emulator. Мой код Flutter выглядит так:

 CloudFunctions.instance.useFunctionsEmulator(origin: 'http://localhost:5005');
final HttpsCallable callable = CloudFunctions.instance.getHttpsCallable(
  functionName: 'addNumbers',
);
dynamic resp = await callable.call(<String, dynamic>{});

моя самая основная c функция выглядит так:

'use strict';

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

exports.addNumbers = functions.https.onCall((data) => {
  return true;
});

и я получаю сообщение об ошибке:

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(functionsError, Cloud function failed with exception., {code: INTERNAL, details: null, message: INTERNAL})
E/flutter (31009): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter (31009): #1      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33)
E/flutter (31009): <asynchronous suspension>
E/flutter (31009): #2      MethodChannelCloudFunctions.callCloudFunction (package:cloud_functions_platform_interface/src/method_channel_cloud_functions.dart:43:15)
E/flutter (31009): #3      HttpsCallable.call (package:cloud_functions/src/https_callable.dart:33:12)

Есть идеи, в чем может быть причина? Нет кода или предположения, что могло случиться. Я добавил Cloud Functions зависимость к build.gradle, а также google-services.json

Изменить: похоже, проблема связана с эмулятором. Я развернул функцию на сервере. Исправлены проблемы (неправильный тип возврата), и это сработало.

1 Ответ

2 голосов
/ 21 июня 2020

На самом деле ошибка не связана с эмулятором:

вы вызываете http: // localhost : 5005, когда вы запускаете его в эмуляторе, вы должны изменить его на: 10.0.2.2 , поэтому вы можете получить доступ к localhost через эмулятор, надеюсь, что это поможет.

10.0.2.2 = localhost

...