当我部署功能时,一切正常,但是使用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"
}
}
我应该怎么做才能使用模拟器测试代码?
答案 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);
的操作时,它会正确配置。