运行Firebase模拟器时出现“意外错误,确定执行环境”

时间:2019-09-14 14:27:14

标签: firebase google-cloud-functions

当我部署功能时,一切正常,但是使用Firebase模拟器在本地运行相同的代码会给我以下错误:

{
  "message": "Unexpected error determining execution environment: request to http://169.254.169.254/computeMetadata/v1/instance failed, reason: connect EHOSTDOWN 169.254.169.254:80 - Local (192.168.1.101:56456)",
  "type": "system",
  "errno": "EHOSTDOWN",
  "code": "EHOSTDOWN",
  "config": {
    "url": "http://169.254.169.254/computeMetadata/v1/instance",
    "headers": {
      "Metadata-Flavor": "Google"
    },
    "retryConfig": {
      "noResponseRetries": 0,
      "currentRetryAttempt": 0,
      "retry": 3,
      "retryDelay": 100,
      "httpMethodsToRetry": [
        "GET",
        "HEAD",
        "PUT",
        "OPTIONS",
        "DELETE"
      ],
      "statusCodesToRetry": [
        [
          100,
          199
        ],
        [
          429,
          429
        ],
        [
          500,
          599
        ]
      ]
    },
    "responseType": "text",
    "timeout": 3000,
    "params": {},
    "method": "GET"
  }
}

我应该怎么做才能使用模拟器测试代码?

1 个答案:

答案 0 :(得分:1)

如果您的云功能需要管理员权限,那么您需要配置一个服务帐户以使云功能在其下运行。

按照此处的说明进行操作: https://firebase.google.com/docs/admin/setup

主要步骤是:

1)创建一个服务帐户并下载.json私钥文件(保留此机密)

在将运行模拟器的控制台中:

2)将GOOGLE_APPLICATION_CREDENTIALS环境变量设置为步骤1中保存的私钥文件的绝对路径。例如export GOOGLE_APPLICATION_CREDENTIALS="/Users/..../...account.json"

3)现在运行模拟器firebase emulators:start --only functions

现在,本地仿真函数可以了解环境。因此,当您执行类似admin.initializeApp(functions.config().firebase);的操作时,它会正确配置。