Firebase emulators:exec -- 只有 firestore 不执行作为参数给出的脚本

Firebase emulators:exec --only firestore not executing the script given as parameter

我曾经 运行 以下命令 运行 针对模拟的 firestore 实例进行一些测试:

firebase emulators:exec --only firestore 'npm test'

自从我升级到 "firebase-functions": "^3.18.0" 和 `"firebase-functions-test": "^0.3.3"' 这不再执行我的测试。一分钟后给我: 错误:超时:本地主机上的端口 8080 在 60000 毫秒内未处于活动状态

运行 firebase emulators:start --only firestore 工作正常。如果我将上面的命令更改为 firebase emulators:exec --only auth 'npm test',执行将按预期进行,但显然测试失败。

有人知道如何解决这个问题吗?

在 Firebase 模拟器中收到此错误的原因可能有多种。我会尝试通过这个答案找出所有可能的解决方案来解决这个问题。

  • 延长您的云功能的持续时间。关注 this.
  • 您可以尝试将主机指定为“127.0.0.1”而不是默认值 “本地主机”。 Firebase.json 应该是这样的:
  { 
    "Firestore":
     { 
      "rules": "firestore.rules", 
      "indexes": "firestore.indexes.json"
     },
   "Emulators":
     { 
       "Firestore":
          { 
            "port": 8080, 
            "host": "127.0.0.1"
          }, 
      "Ui":
          { 
           "enabled": true
          }
       }
    }

  • 有时,按照建议恢复到以前的版本修复 在 .
  • 您可以直接尝试 运行 Firestore 模拟器 JAR,看看是否 它适合你。

As Gourav B 问我使用的是哪个节点版本。我想我会尝试 运行 它与我安装的不同版本。

版本 17 是默认版本,仍然无法使用。 我很快改成了14,firebase emulators:exec --only firestore 'npm test'就运行顺利了。

节点版本 16 也没有任何问题。

作为给阅读本文的人的提示:为了在节点版本之间快速切换,我个人使用 Node Version Manager (nvm)