Firestore 模拟器:无法使用主机 0.0.0.0 查看 UI 中的文档

Firestore emulator: can't see documents in UI using host 0.0.0.0

我在 Windows 上使用 firebase-tools v9.0.1,将 NVM 用于 Windows v1.1.7 和 Node v14.15.2。

我已经成功安装并可以 运行 用于 firestore、功能和身份验证的模拟器。我使用模拟器 UI 向 firestore 填充了数据,并使用 firebase emulators:export test_data 导出了一些测试数据。我现在在使用 firebase emulators:start --import test_data 启动模拟器时使用它,以便在模拟器 UI.

重新启动后看到我的所有测试数据

当我将 firebase.json 中的主机更改为 0.0.0.0 以便我可以将真实设备上的 flutter 应用 运行ning 连接到模拟器时,奇怪的事情就开始了:

{
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ],
    "source": "functions"
  },
  "emulators": {
    "auth": {
      "port": 9099
    },
    "functions": {
      "port": 5001,
      "host": "0.0.0.0"   <-- this is added
    },
    "firestore": {
      "port": 8080,
      "host": "0.0.0.0"   <-- this is added
    },
    "ui": {
      "enabled": true
    }
  }
}

当我这样做并重新启动模拟器时,它们成功启动,我可以访问 UI - 但所有文件都不见了。我可以看到所有 collections,只是看不到任何文件。但是,设备可以看到文档 - 所以它们就在那里,只是 UI 没有显示它们。该设备甚至可以添加文档(也不会出现在 UI 中)。如果我再次导出数据,然后在没有主机 0.0.0.0 的情况下重新启动模拟器,嘿,很快所有文档都会再次出现,其中使用设备添加的文档。

似乎正在发生的事情是,当我 运行 使用主机 0.0.0.0 时,UI 没有权限查看任何文档。这是预期的还是这是一个错误?有没有办法解决?模拟器似乎没有任何安全规则,所以我有点卡住了。

编辑

启动开发者控制台后,我可以在模拟器 UI 页面上看到:

VM6:1 POST http://0.0.0.0:8080/google.firestore.v1.Firestore/Listen/channel?database=projects%2Fmyproject%2Fdatabases%2F(default)&VER=8&RID=9716&CVER=22&X-HTTP-Session-Id=SomeRedactedStuff net::ERR_ADDRESS_INVALID

所以我猜问题是 UI 正在 0.0.0.0 而不是 localhost 上寻找 firebase。我不确定如何解决这个问题。

事实证明 this was a bug,现在已在 firebase-tools v9.1.0 中修复。如果您全局安装了 CLI,请使用以下命令检查您的版本:

npm outdated -g --depth=0

如果您有较早的版本,例如:

Package          Current   Wanted   Latest  Location 
firebase-tools   9.0.1     9.1.0    9.1.0   global

更新使用:

npm install -g firebase-tools