具有功能的Firebase Node.js本地测试证书

时间:2020-06-19 15:34:37

标签: javascript node.js firebase firebase-authentication firebase-cli

以下所有代码在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);
      });
};

1 个答案:

答案 0 :(得分:0)

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

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

该代码可以正常使用-该错误是由于我的帐户限制所致。我发布此邮件的目的是希望它可以避免其他开发人员浪费我的时间。