firebase-tools getaddrinfo ENOTFOUND metadata.google.internal

firebase-tools getaddrinfo ENOTFOUND metadata.google.internal

我的终端出现这个错误:

@firebase/database: FIREBASE WARNING: {"code":"app/invalid- 
credential","message":"Credential implementation provided to . 
initializeApp() via the \"credential\" property failed to fetch a valid 
Google OAuth2 access token with the following error: \"Failed to parse 
access token response: Error: Error while making request: getaddrinfo 
ENOTFOUND metadata.google.internal metadata.google.internal:80. Error 
code: ENOTFOUND\"."}`

使用 firebase-tools 时。这是我正在尝试 运行.

的简单节点脚本
const admin = require("firebase-admin");

const firebase = admin.initializeApp({
  apiKey: "MY_API_KEY",
  authDomain: "APP_ID.firebaseapp.com",
  databaseURL: `https://DATABASE_URL.firebaseio.com`,
  projectId: "APP_ID"
});

const snap = firebase
  .database()
  .ref("REF")
  .child("ID")
  .once("value");
console.log(snap);

Firebase 工具版本:5.0.1

我已尝试使用 firebase login / firebase-logout

卸载和重新安装、登录和注销 firebase-tools

配置结构错误,缺少字段...

admin.initializeApp({
    databaseURL: 'https://<DATABASE_NAME>.firebaseio.com',
    credential: admin.credential.cert({
        projectId: '<PROJECT_ID>',
        clientEmail: 'foo@<PROJECT_ID>.iam.gserviceaccount.com',
        privateKey: '-----BEGIN PRIVATE KEY-----\n<KEY>\n-----END PRIVATE KEY-----\n'
    })
});

您不能只使用 "web" 配置来访问 Firebase Admin SDK。

因为如果这是可能的,私钥就会暴露给 public。

参见 documentation

我简单地通过 运行 解决了它:

firebase login

我在没有互联网连接时也会出现此错误。