Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法加载默认凭据?(Node.js谷歌计算引擎教程)_Javascript_Node.js_Google Cloud Platform_Google Compute Engine - Fatal编程技术网

Javascript 无法加载默认凭据?(Node.js谷歌计算引擎教程)

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

情况:

我将遵循以下教程:

一切正常,直到我启动npm并转到:

我在空白页上看到下面的文字:

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文件的路径

有关详细信息,请参阅

  • 使用创建服务帐户密钥并下载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配置片段。朗
    Ex(node.js):

    • 现在我们需要添加
      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&#39;s really you sending the requests, and not a robot. 
      The block will expire shortly after those requests stop.