错误:14 不可用:未建立连接 - Cloud Firestore

问题描述 投票:0回答:2

我正在尝试在我的计算机上使用 firebase 的管理 SDK。当我尝试获取用户集合时,我得到了

Error: 14 UNAVAILABLE: No connection established
。写入 firestore 也没有任何作用。我该如何解决这个问题?

编辑 来自文档

Firebase Admin SDK 自动连接到 Cloud Firestore 设置 FIRESTORE_EMULATOR_HOST 环境变量时的模拟器

我确实设置了该环境变量,但我正在尝试连接到生产环境。我如何指示 SDK 执行此操作?

index.js

const admin = require("firebase-admin");
const serviceAccount = require("./serviceAccount.json");
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: ""
});

const snapshot =  admin.firestore().collection('users').get().then((snapshot)=>{
  snapshot.forEach((doc) => {
    console.log(doc.id, '=>', doc.data());
  });
}).catch(e=>{
  console.error(e);
});

完整的错误日志:

PS C:\Users\simeon.ramjit\Documents\projects\controllino-server> node index
Error: 14 UNAVAILABLE: No connection established
    at Object.callErrorFromStatus (C:\Users\simeon.ramjit\Documents\projects\controllino-server\node_modules\@grpc\grpc-js\build\src\call.js:31:26)
    at Object.onReceiveStatus (C:\Users\simeon.ramjit\Documents\projects\controllino-server\node_modules\@grpc\grpc-js\build\src\client.js:330:49)
    at Object.onReceiveStatus (C:\Users\simeon.ramjit\Documents\projects\controllino-server\node_modules\@grpc\grpc-js\build\src\client-interceptors.js:299:181)
    at C:\Users\simeon.ramjit\Documents\projects\controllino-server\node_modules\@grpc\grpc-js\build\src\call-stream.js:145:78
    at processTicksAndRejections (internal/process/task_queues.js:77:11)
Caused by: Error
    at CollectionReference._get (C:\Users\simeon.ramjit\Documents\projects\controllino-server\node_modules\@google-cloud\firestore\build\src\reference.js:1450:23)
    at CollectionReference.get (C:\Users\simeon.ramjit\Documents\projects\controllino-server\node_modules\@google-cloud\firestore\build\src\reference.js:1439:21)
    at Object.<anonymous> (C:\Users\simeon.ramjit\Documents\projects\controllino-server\index.js:41:57)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
    at internal/main/run_main_module.js:17:47 {
  code: 14,
  details: 'No connection established',
  metadata: Metadata { internalRepr: Map(0) {}, options: {} }
}
node.js firebase google-cloud-firestore
2个回答
8
投票

如上所述,如果设置了 FIRESTORE_EMULATOR_HOST 环境变量,管理 SDK 将尝试连接到您的模拟器。

以下此评论我删除了环境变量并重新启动了我的终端,它成功连接到生产环境


0
投票

此问题也可能是由于 Firebase 应用程序无法解析域名引起的。在 ubuntu 上,我已使用 /etc/docker/daemon.json 文件切换为使用 ufw,如下所示:

{
  "iptables":false
}

这会阻止 docker 使用 iptables 中可用的默认传出规则。 ufw 可以使用多个选项来启用传出流量,例如。

ufw allow ssh
ufw default allow outgoing
ufw enable

您还可以根据需要启用到特定 IP 地址的传出。有关这些说明的更多信息,请参见此处

© www.soinside.com 2019 - 2024. All rights reserved.