我尝试使用函数模拟器,但当我尝试在Flutter应用程序中使用它时,它会导致问题。我目前在免费计划,但我已经阅读了本地仿真器的功能可用。
当我像这样创建函数(使用节点v2)时:
exports.getBooks = onRequest(async (req, res) => {
...
}
字符串
然后从我的浏览器发出HTTP请求,我得到了想要的结果。但是,当我将其更改为
const {onCall, onRequest} = require("firebase-functions/v2/https");
const logger = require("firebase-functions/logger");
const {getFirestore} = require("firebase-admin/firestore");
const admin = require("firebase-admin");
const app = admin.initializeApp();
const db = getFirestore(app);
exports.getBooks = onCall(async (request) => {
...
}
型
然后从我的Flutter应用程序调用函数,我得到一个UNAVAILABLE异常。
我在我的main.dart中添加了以下代码:
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
FirebaseFunctions.instance.useFunctionsEmulator('localhost', 5001);
型
在我的应用程序中有这样的代码:
final HttpsCallable getBooks = FirebaseFunctions.instance.httpsCallable('getBooks');
final response = await getBooks.call();
// OR without .call(): final response = await getBooks();
型
但是,.call()
方法导致了此问题。
我已经在AndroidManifest.xml中添加了android:usesCleartextTraffic="true"
到<application>
,但它没有解决这个问题。
你有什么想法吗?
相关链接
[不适用]
1条答案
按热度按时间6tdlim6h1#
尝试将localhost替换为10.0.2.2。
此外,如果您的函数部署在任何特定的区域中,请指定该区域,如以下所示。
字符串
以上的改变应该行得通。