Firebase函数https调用在模拟器上不起作用



在firebase模拟器上执行https调用时,我只得到一个FirebaseFunctionException。除了https调用之外,其他所有函数都可以正常工作。当在没有模拟器的情况下连接到firebase时,一切都能正常工作。我在网上找不到解决方案,有人能帮忙吗?

方法调用:

try {
HttpsCallable callable =
FirebaseFunctions.instance.httpsCallable('getBookData');
final results = await callable.call(parameters);

初始化:

WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
...
final localHostString = Platform.isAndroid ? '10.0.2.2' : 'localhost';
// dotenv.get('HOST_IP');
FirebaseFunctions.instance
.useFunctionsEmulator('http://$localHostString', 5001);
FirebaseFirestore.instance.settings = Settings(
host: '$localHostString:8080',
sslEnabled: false,
persistenceEnabled: false,
);
await auth.FirebaseAuth.instance.useEmulator(
Platform.isAndroid ? 'http://localhost:9099' : 'http://0.0.0.0:9099');
}

异常:

code:"unavailable"
details:null
message:"UNAVAILABLE"
plugin:"firebase_functions"
stackTrace:#0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:607:7)
#1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:156:18)
<asynchronous suspension>
#2      MethodChannelHttpsCallable.call (package:cloud_functions_platform_interface/src/method_channel/method_channel_https_callable.dart:23:24)
<asynchronous suspension>
#3      HttpsCallable.call (package:cloud_functions/src/https_callable.dart:35:37)
<asynchronous suspension>
#4      BookRequest._requestBooksFromCloudFunction (package:bookR/shared/bookRequest.dart:47:23)
<asynchronous suspension>
#5      BookRequest.getMoreBooksByTitle (package:bookR/shared/bookRequest.dart:23:24)
<asynchronous suspension>
#6      BookRequest.getBookInformationByTitle (package:bookR/shared/bookRequest.dart:37:13)
<asynchronous suspension>
#7      SearchBar.build.<anonymous closure> (package:bookR/widgets/searchBar.dart:34:28)
<asynchronous suspension>
hashCode:439854717
runtimeType:Type (FirebaseFunctionsException)

我终于想通了!:D万一将来有人发现这个:

FirebaseFunctions.instance
.useFunctionsEmulator('http://$localHostString', 5001);

这会导致错误。正确的版本是:

FirebaseFunctions.instance
.useFunctionsEmulator('$localHostString', 5001);

现在Serverthing按预期工作

最新更新