首页 > 解决方案 > Firestore 模拟器:使用主机 0.0.0.0 在 UI 中看不到文档

问题描述

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

我已经成功安装并且可以运行模拟器来运行 firestore、functions 和 auth。我已经使用模拟器 UI 用数据填充了 Firestore,并用于firebase emulators:export test_data导出一些测试数据。我现在在启动模拟器时使用它,firebase emulators:start --import test_data以便在模拟器 UI 中重新启动后看到我的所有测试数据。

当我将 firebase.json 中的主机更改为 0.0.0.0 时,奇怪就开始了,这样我就可以将在真实设备上运行的颤振应用程序连接到模拟器:

{
  "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 - 但所有文档都消失了。我可以看到所有的收藏,只是看不到任何文件。但是,设备可以看到文档 - 所以它们在那里,只是 UI 没有显示它们。该设备甚至可以添加文档(也不会出现在 UI 中)。如果我再次导出数据,然后在没有 host 的情况下重新启动模拟器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

所以我猜问题是用户界面在 0.0.0.0 而不是 localhost 上寻找火力基地。我不确定如何解决。

标签: google-cloud-firestorefirebase-tools

解决方案


事实证明这是一个错误,现在已在 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

推荐阅读