【问题标题】:Setting up environment variables in node, specifically, GOOGLE_APPLICATION_CREDENTIALS在节点中设置环境变量,特别是 GOOGLE_APPLICATION_CREDENTIALS
【发布时间】:2018-12-02 23:09:53
【问题描述】:

我有一个节点应用程序,我正在尝试使用谷歌语言 api。我想将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为同一目录中的 json 文件(与 package.json 和 app.js 同级)。

我曾在我的 app.js 文件中尝试过 process.env.GOOGLE_APPLICATION_CREDENTIALS = "./key.json";(使用 express),但它不起作用。我也尝试将"GOOGLE_APPLICATION_CREDENTIALS":"./key.json" 放在我的 package.json 中,但效果不佳。当我在终端 export GOOGLE_APPLICATION_CREDENTIALS="./key" 中运行时,它确实有效。

这是错误信息:

ERROR: Error: Unexpected error while acquiring application default credentials: Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information.

感谢任何提示,谢谢!

【问题讨论】:

    标签: node.js google-cloud-platform environment-variables


    【解决方案1】:

    在互联网上阅读和阅读有关此问题后,对我来说解决此问题的唯一方法是声明节点执行的环境变量:

    GOOGLE_APPLICATION_CREDENTIALS="./key.json" node index.js
    

    因为我能够从我的服务器控制台打印令牌,但是当我运行节点应用程序时,库无法检索系统环境值,但设置执行变量,它能够检索价值。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。通过执行以下操作,我能够使其正常工作:

      export GOOGLE_APPLICATION_CREDENTIALS="//Users/username/projects/projectname/the.json"
      

      【讨论】:

        【解决方案3】:

        可能是您操作系统中的环境变量设置不准确。例如,在 Linux 中,您通常必须在执行应用的终端中设置 GOOGLE_APPLICATION_CREDENTIALS。

         export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
        

        您的另一个选择是通过代码传递 json 路径。是 documented 这个进程使用 Node.js 和云存储。

        【讨论】:

          【解决方案4】:

          docs here 主要介绍了这个问题。

          该命令会根据您的操作系统略有不同:

          【讨论】:

            【解决方案5】:

            只是为了更新这个线程。 带有 GOOGLE_APPLICATION_CREDENTIALS 的相对路径现在可以在 dotenv 中正常工作:)

            只需将您的服务帐户凭据作为文件存储在您的项目中,然后将其相对于您的 env 文件作为路径引用。那么它应该可以正常工作:)

            【讨论】:

              【解决方案6】:

              您设置的 GOOGLE_APPLICATION_DEFAULT 环境变量可以由 google 客户端库访问 - 它不适用于相对路径,您需要设置绝对路径。

              【讨论】:

              • 不幸的是,这不起作用,我得到:错误:错误:获取应用程序默认凭据时出现意外错误:无法加载默认凭据。浏览至developers.google.com/accounts/docs/… 了解更多信息。
              • 似乎也不支持 home ("~/") 扩展,所以如果您使用它,请尝试指定完整路径。除此之外,如果出现读取权限问题,请在 key.json 文件上尝试 chmod 777?
              • 是的,我试过 process.env.GOOGLE_APPLICATION_CREDENTIALS = "/Users/my_username/Google Drive/Projects/my_project/key.json";
              • 但是,我在使用谷歌云时遇到了可能与环境变量无关的问题,因此我将其标记为已解决。有关更多信息,请参阅stackoverflow.com/questions/51005782/…。谢谢!
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-02-24
              • 2022-08-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多