首页 > 解决方案 > Firebase Node.js 本地测试凭证与功能

问题描述

下面的所有代码都可以firebase deploy在本地机器上运行,但在本地机器上运行时会抛出错误:

错误:通过“凭据”属性提供给 initializeApp() 的凭据实现未能获取有效的 Google OAuth2 访问令牌,并出现以下错误:“获取访问令牌时出错:发出请求时出错:getaddrinfo ENOTFOUND metadata.google.internal。错误代码:ENOTFOUND”。

如何更改以下配置,使其在本地测试环境和部署后的 Firebase 中工作?

foo.js在本地和 firebase 上工作 getUsersFunction在 firebase 上工作,但不能在本地工作firebase emulators:start --only=functions

我设置了两个firebase端点并在本地运行它们: firebase emulators:start --only=functions

index.js

"use strict";
const fooFunction = require("./foo");
const getUsersFunction = require("./getUsers");
const functions = require("firebase-functions");
const admin = require("firebase-admin");

admin.initializeApp(functions.config().firebase);

exports.fooFunction = functions.https.onRequest((req, res) => {
   fooFunction.handler(req, res);
});

exports.getUsersFunction = functions.https.onRequest((req, res) => {
   getUsersFunction.handler(req, res, admin);
});

foo.js

exports.handler = function (req, res, database) {
   res.send("foo ran successfully");
};

getUsersFunction.js

exports.handler = function (ref, res, admin) {
   admin
      .auth()
      .listUsers(1000)
      .then(function (listUsersResult) {
         console.log(listUsersResult);
         res.send("done");
         return null;
      })
      .catch(function (error) {
         console.log("Error listing users:", error);
      });
};

标签: javascriptnode.jsfirebasefirebase-authenticationfirebase-cli

解决方案


我刚刚检查了 Firebase 日志并注意到了这一点:

未配置结算帐号。外部网络无法访问,配额受到严格限制。配置结算帐户以删除这些限制

代码按原样很好 - 错误是由于我的帐户限制造成的。我发布这个是希望它可以避免其他开发人员浪费我所做的时间。


推荐阅读