【问题标题】:Firebase Firestore emulator on physical IOS / Android device物理 IOS / Android 设备上的 Firebase Firestore 模拟器
【发布时间】:2021-05-15 14:04:42
【问题描述】:

好的,我已经完成了所有这些研究。

我正在尝试让 Firebase - Firestore 数据库模拟器在我开发时通过 Expo 应用程序在我的物理 IOS 设备上工作。

我可以让 Localhost 在浏览器中工作,并让 10.0.2.2:(8080) 通过 Android 模拟器工作。但是,我无法让我的 PHYSICAL IOS 设备工作。我收到 firebase 无法在 10 秒内连接错误。

尝试了localhost,尝试了expo app中提供的ip 192.168.x.x尝试了我当前wifi位置给出的ip地址,没有。

我已经对不同的配置进行了广泛的研究。我正在寻找能够让它工作并知道他们的步骤的人。我是否缺少配置设置等?

因为它适用于网络,我不相信我有模拟器。

我正在使用这段代码来连接Android Emulator / Web browswer

firebase.firestore().settings({ 实验力长轮询:真, 主机:'10.0.2.2:8084'
,ssl:false})

请不要在回复中猜测,只寻找那些复制了手头确切问题的解决方案的人。

谢谢

【问题讨论】:

    标签: ios firebase google-cloud-firestore expo emulation


    【解决方案1】:

    在您的 firebase.json 中,为您使用的每个模拟器设置一个主机参数“0.0.0.0”。

    下面是我用来连接到带有真实 iOS 设备的模拟器的代码

    firebase.json

    {
      "emulators": {
        "auth": {
          "port": 9099,
          "host": "0.0.0.0"
        },
        "functions": {
          "port": 5001,
          "host": "0.0.0.0"
        },
        "firestore": {
          "port": 8080,
          "host": "0.0.0.0"
        },
        "database": {
          "port": 9000,
          "host": "0.0.0.0"
        },
        "ui": {
          "enabled": true
        }
      },
      "firestore": {
        "rules": "firestore.rules",
        "indexes": "firestore.indexes.json"
      },
      "database": {
        "rules": "database.rules.json"
      }
    }
    

    然后在客户端添加

    realtimeDatabase.useEmulator(yourLocalIp, 9000);
    firestore.useEmulator(yourLocalIp, 8080);
    firebase.functions().useEmulator(yourLocalIp, 5001);     
    auth.useEmulator('http://yourLocalIp:9099')
    

    【讨论】:

    • 我没有 useEmulator 方法作为选项。我可能需要更新我的 Firebase,目前我使用设置方法让它在 Android 模拟器中工作。你知道是否有办法通过设置方法完成它?我相信你的答案是正确的,但对于那些已经拥有包含 useEmulator 的正确版本的 Firebase 的人来说。谢谢。
    • 仅供参考 Firebase 版本 9.1.0
    • 这里的“yourLocalIp”是什么? 0.0.0.0?
    【解决方案2】:

    最终答案。更新你的包。 (我对自己很生气)

    我花了无数个小时试图找出一个尚未找到解决方案的问题,因为它会在未来的版本中出现。

    所以我在更新到 sdk 8.29 后拥有 Firebase javascript sdk 7.9,它在物理 IOS 设备上运行完美。我没用useEmulator,我用这段代码。

    if(firebase.apps.length === 0){
           
        firebase.initializeApp(config)      
            
        firebase.firestore().settings({ 
             experimentalForceLongPolling: true,
             host:'192.168.X.XX:8089'         
             ,ssl:false
             })        
    
        } else {      
            firebase.app()
        }
    

    导出默认firebase

    settings 方法对我很有用,不确定我是否会发现不使用 useEmulator 的其他问题,或者是否适用于不同类型的平台。我正在使用 expo/React Native。

    感谢您的回复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      • 2021-06-28
      相关资源
      最近更新 更多