У меня есть очень простой код, чтобы просто протестировать облачные функции в моем приложении 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
Изменить: похоже, проблема связана с эмулятором. Я развернул функцию на сервере. Исправлены проблемы (неправильный тип возврата), и это сработало.