无法在颤振中访问 Firestore 本地仿真器套件

Posted

技术标签:

【中文标题】无法在颤振中访问 Firestore 本地仿真器套件【英文标题】:Can't get access to firestore local emulator suite in flutter 【发布时间】:2021-08-09 16:52:13 【问题描述】:

我无法在 Flutter 中连接到 Firestore 模拟器。它反映在 Firebase 主控制台中。 我用的是安卓模拟器

void initState() 
super.initState();
firestore = FirebaseFirestore.instance;
firestore.settings = Settings(
  host: '10.0.2.2:8080',
  sslEnabled: false,
);

firestore.collection('tokens').add('data': 16);

我根据文档配置了模拟器。

─────────────────────────────────────────────────────────────┐
│ ✔  All emulators ready! It is now safe to connect your app │
│ i  View Emulator UI at http://localhost:4000                │
└─────────────────────────────────────────────────────────────┘

┌───────────┬────────────────┬─────────────────────────────────┐
│ Emulator  │ Host:Port      │ View in Emulator UI             │
├───────────┼────────────────┼─────────────────────────────────┤
│ Functions │ localhost:5001 │ http://localhost:4000/functions │
├───────────┼────────────────┼─────────────────────────────────┤
│ Firestore │ localhost:8080 │ http://localhost:4000/firestore │
└───────────┴────────────────┴─────────────────────────────────┘
  Emulator Hub running at localhost:4400
  Other reserved ports: 4500

Issues? Report them at https://github.com/firebase/firebase-tools/issues and attach the *-debug.log files.

!  It looks like you're trying to access functions.config().functions but there is no value there. You can learn more about setting up config here: https://firebase.google.com/docs/functions/local-emulator

firebase 版本:

firebase --version 
9.11.0

firebase.json

 
  "emulators": 
    "functions": 
      "port": 5001
    ,
    "ui": 
      "enabled": true
    ,
    "firestore": 
      "port": 8080
    
  

http://localhost:4000/firestore 上没有显示数据,即使更改了设置(主机),数据也反映在主 firebase 控制台上。

我有时会收到此错误:

MissingPluginException (MissingPluginException(未找到实现 用于通道上的方法 DocumentReference#set plugins.flutter.io/firebase_firestore))

pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
cupertino_icons: ^1.0.1
  firebase_auth: ^0.20.1
  equatable: ^1.2.6
  bloc: ^6.1.3
  flutter_bloc: ^6.1.3
  firebase_core: ^0.7.0
  cloud_firestore: ^0.16.0
  google_sign_in: "^4.5.1"
  flutter_rating_bar: ^4.0.0
  image_picker: ^0.6.7+17
  firebase_storage: ^7.0.0
  syncfusion_flutter_calendar: ^18.4.42
  simple_time_range_picker: ^0.0.2
  firebase_messaging: ^8.0.0-dev.15
  cloud_functions: ^0.9.0

非常感谢一些帮助。谢谢

【问题讨论】:

我觉得有必要问几个愚蠢的问题:您是否尝试过使用 IP 而不是“localhost”标签进行连接?您是否正在使用已启用的功能?如果是这样,你有enabled clear text communication吗?最后,您是否添加了您希望看到的数据? Firestore 模拟器毕竟是一个模拟器,因此它不会包含您的生产数据,因为它是为开发环境而不是生产环境设计的。 是的,我尝试过使用 IP。我已经尝试向其中添加数据。当然,先生,它不会有生产数据。使用 android 10,因此启用明文通信没有问题。 抱歉,我才意识到,您使用的是带有 Flutter 的基础 Firebase 而不是 Flutterfire?我几乎完全忘记了FirebaseExtended,所以我并没有真正考虑过。但是,是的,Flutter 有一个更好地集成了 Firebase 的发行版,你仍然需要模拟器。不过,如果可以相信this article,那么您已经正确设置了初始化......对不起,我之前没有注意到data.add()。我建议尝试 Flutterfire 而不是 Flutter,应该有助于实现... 实施,这就是我要结束该评论的内容。但是字符限制是一回事 没问题。但我正在使用 FlutterFire。 【参考方案1】:

您需要使用最新版本的依赖项。您可以查看最新版本here。

更新依赖项后,您必须运行:

flutter clean
flutter packages get

【讨论】:

【参考方案2】:

对我来说,问题是生产数据仍在我的应用程序的缓存中。重新安装后就可以了!

【讨论】:

以上是关于无法在颤振中访问 Firestore 本地仿真器套件的主要内容,如果未能解决你的问题,请参考以下文章

我无法在颤振 Firestore 上将字段设置为 NULL

如何使用颤振删除 Firestore 文档中的字段

颤振开发。通过 Stream Builder 从 Firebase Storage 和 Firestore 获取数据

构建iOS时出现颤振云Firestore错误

如何在颤振中以简单的方式从实时数据库中获取数据?

在 Flutter 中捕获云 Firestore 文档快照错误