以下所有代码在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);
});
};
答案 0 :(得分:0)
我刚刚检查了Firebase日志并注意到了这一点:
未配置结算帐户。无法访问外部网络,并且 配额受到严格限制。配置结算帐户以删除这些 限制
该代码可以正常使用-该错误是由于我的帐户限制所致。我发布此邮件的目的是希望它可以避免其他开发人员浪费我的时间。