Javascript 无法加载默认凭据?(Node.js谷歌计算引擎教程)
情况: 我将遵循以下教程: 一切正常,直到我启动npm并转到: 我在空白页上看到下面的文字:Javascript 无法加载默认凭据?(Node.js谷歌计算引擎教程),javascript,node.js,google-cloud-platform,google-compute-engine,Javascript,Node.js,Google Cloud Platform,Google Compute Engine,情况: 我将遵循以下教程: 一切正常,直到我启动npm并转到: 我在空白页上看到下面的文字: Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information. 这毫无意义,因为我正在使用OAuth。我按照链接阅读了该页面,但我没有GOOGLE-APPLICATION
Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information.
这毫无意义,因为我正在使用OAuth。我按照链接阅读了该页面,但我没有GOOGLE-APPLICATION-CREDENTIALS
字段,教程中也没有相关内容
问题: 你能重复这些步骤并告诉我你是否得到同样的结果吗 (需要5分钟)
如果没有,我会做错什么?是的,我也有同样的错误。这很烦人,因为谷歌云平台文档在其“入门”书架教程中没有提到这一点。这意味着任何尝试本教程的新开发人员都会看到此错误 请阅读以下内容: 我通过运行以下命令修复了此问题:
gcloud auth应用程序默认登录
要运行此gcloud auth应用程序默认登录名
访问:
1) 您必须将sdk安装到计算机中
2) 这将使您能够运行代码
3) 登录到你的相关gmail帐户,你就可以开始了
这将使您登录,然后您在本地编写代码将使用该身份验证。如果您在本地运行应用程序,则
gcloud beta auth应用程序默认登录
命令应足以获取本地凭据(我更新为这样说)
在Google Compute Engine上运行应用程序时,如果使用适当的作用域创建了计算引擎实例(
云平台
应该足够),则应用程序将自动通过Google云平台API进行身份验证,而无需您做任何额外工作。此问题有两种解决方案。其他人提到的一个选项是使用gcloud auth应用程序默认登录名
第二个选项是设置环境变量GOOGLE\u APPLICATION\u CREDENTIALS
。它应该指向定义凭据的文件。要获取此文件,您需要执行以下步骤:
转到API控制台凭据页面
从项目下拉列表中,选择您的项目
在凭据页面上,选择创建凭据下拉列表,然后单击
选择服务帐户密钥
从服务帐户下拉列表中,选择现有服务帐户
或者创建一个新的
对于键类型,选择JSON键选项,然后选择创建。档案
自动下载到您的计算机
将刚下载的*.json文件放在
选择
此目录必须是私有的(您不能让任何人访问
此选项),但可供web服务器代码访问
将环境变量GOOGLE\u APPLICATION\u CREDENTIALS设置为
下载的JSON文件的路径
有关详细信息,请参阅
GOOGLE\u应用程序\u凭证=”“
我提供了另一种手动设置凭据的方法。用于本地开发和在GCP上运行,如云功能、计算引擎 您可以使用服务帐户并授予此服务帐户适当的权限。e、 g.云跟踪管理 为任何GCP客户端库设置
private\u key
、client\u email
和projectId
选项。这些选项可以从服务帐户json文件获得
例如,我在云函数中使用Cloud Trace Node.js客户端库
在设置凭证
和项目ID
之前,我遇到了以下错误:
错误:获取应用程序默认凭据时出现意外错误:无法加载默认凭据。浏览以了解更多信息。在古格里斯。(/srv/node_modules/google auth library/build/src/auth/googleauth.js:248:31)在Object.next(/srv/node_modules/google auth library/build/src/auth/googleauth.js:28:53)处(/srv/node_modules/google auth library/build/src/auth/googleauth.js:19:58)at-at-process._-tickDomainCallback(internal/process/next_-tick.js:229:7)
您可以将凭证
和项目ID
作为环境变量传递。设置凭证
和项目ID
后,错误消失
const tracer=require(“@google cloud/trace agent”)。开始({
抽样率:0,
缓冲区大小:1,
证书:{
客户电子邮件:process.env.client\u电子邮件,
私钥:process.env.TRACE\u AGENT\u ADMIN,
},
projectId:process.env.X_GOOGLE_GCLOUD_PROJECT| | process.env.PROJECT_ID,
});
X_GOOGLE\u GCLOUD\u项目
是云函数运行时的内置环境变量使用它来解决您的问题。这实际上是有效的:-
只需输入credential参数并引用您的密钥即可
const serviceAccount = require('../key.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
转到此处:并按照说明创建私钥。
然后,在项目目录中下载私钥打开命令提示符后,执行以下命令:
set GOOGLE_APPLICATION_CREDENTIALS=C:\YOUR-PATH\YOUR-KEY.json
我之所以出现此错误,是因为最初我喜欢以下内容:
var admin = require("firebase-admin");
admin.initializeApp(); // I didnt add anything because firebaserc file include appName
当我部署函数时,它起作用了,但在service
中没有。我就是这样解决的:
- 转到firebase项目设置(单击侧导航的设置图标)
- 单击服务帐户
- 从选择您的专业软件中复制管理sdk配置片段。朗
- 现在我们需要添加
文件serviceAccountKey.json
- 单击右上角的管理服务帐户权限
- 现在,您将看到服务帐户
var admin = require("firebase-admin"); admin.initializeApp(); // I didnt add anything because firebaserc file include appName
var admin = require("firebase-admin"); var serviceAccount = require("path/to/serviceAccountKey.json"); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: "https://your-domain.firebaseio.com" });
const functions = require('firebase-functions'); var admin = require("firebase-admin"); var serviceAccount = require("./myapp-15456-68dfdc857c55.json"); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: "https://myapp-15456.firebaseio.com" });
const serviceAccount = require('../keys/file.json'); //<- your firebase credentials const client = new KeyManagementServiceClient({ credentials: serviceAccount, });
"scripts": { "start": "export GOOGLE_APPLICATION_CREDENTIALS='./gcloud.json' && node ./bin/www --exec babel-node --presets babel-preset-env", },
firebase deploy --only functions --debug
[2020-12-02T08:31:50.397Z] FirebaseError: HTTP Error: 429, Unknown Error Error: Could not read source directory. Remove links and shortcuts and try again.
Our systems have detected unusual traffic from your computer network. This page checks to see if it's really you sending the requests, and not a robot. The block will expire shortly after those requests stop.