使用heroku和GOOGLE_APPLICATION_CREDENTIALS找不到配置文件

zc0qhyus  于 2022-11-13  发布在  Go
关注(0)|答案(2)|浏览(157)

我已经创建了一个部署在heroku上的Spring Boot 应用程序。一切都很好。现在,我正在尝试使用谷歌云上的文本到语音API。这在本地工作正常,但当我想在heroku上使用它时,我得到了警告。
从环境变量GOOGLE_APPLICATION_CREDENTIALS(值为“config/keyFile.json”)中阅读凭据文件时出错:文件不存在。
我在《英雄传》中已经设定了以下内容:

heroku config:set GOOGLE_APPLICATION_CREDENTIALS=‘config/keyFile.json’

不管我把文件放在哪里。。我都不能让它工作。谁能帮忙?

sulc1iza

sulc1iza1#

我通过使用GOOGLE_APPLICATION_CREDENTIALS json文件的内容设置一个heroku配置变量(比如GOOGLE_APPLICATION_CREDENTIALS)并调用需要示例化客户端的process.env.GOOGLE_APPLICATION_CREDENTIALS来实现这一点。
在任何情况下,将密钥文件保存到远程服务器(如heroku)都不是最佳做法,使用环境变量调用密钥更安全。

// Where you need to instantiate the google project client,
var keyValue = JSON.parse(process.env.GOOGLE_APPLICATION_CREDENTIALS);
// set the 'credentials' parameter with keyValue
n7taea2i

n7taea2i2#

我在vercel中遇到了类似的问题,它无法找到serviceaccount.json。最后,我通过将credenial作为对象直接传递给TextToSpeechClient构造函数,使其正常工作。只需记住对敏感属性使用环境变量。

const client = new textToSpeech.TextToSpeechClient({
    credentials: {
      type: "service_account",
      project_id: "",
      private_key_id: "",
      private_key:"",
      client_email: "",
      client_id: "",
      auth_uri: "",
      token_uri: "",
      auth_provider_x509_cert_url: "",
      client_x509_cert_url:"",
    },
  });

您可以在此处查看Google文档:https://cloud.google.com/nodejs/docs/reference/text-to-speech/latest/text-to-speech/v1.texttospeechclient
文档并不清楚ClientOptions对象应该是什么样子的。我只是猜测了一下credentials {credentials:{}}部分,它就起作用了。
希望这能帮助那些需要将什么部署到云并且正在努力获得通往serviceaccount.json的正确路径的人

相关问题