【问题标题】:NodeJS Google Vision is unable to detect a Project Id in the current environmentNodeJS Google Vision 无法在当前环境中检测到项目 ID
【发布时间】:2019-06-14 12:18:49
【问题描述】:
Ubuntu环境下NodeJS Google Vision报错:
错误:无法在当前环境中检测到项目 ID。
即使我已经通过了 json 凭证
$ export GOOGLE_APPLICATION_CREDENTIALS=/var/credential_google.json"
请帮忙。
【问题讨论】:
标签:
node.js
google-vision
【解决方案1】:
作为一个快速破解,你可以试试这个:
$ GOOGLE_APPLICATION_CREDENTIALS="/var/credential_google.json" node app.js
【解决方案2】:
如果您通常是 Windows 用户并尝试使用 Ubuntu(如我),问题可能在于导出命令将变量导出到所有终端会话的假设,并且您需要打开一个新终端才能使用它(正如在环境变量的 Windows 终端中所预期的那样)。
导出命令不会将变量导出到另一个终端会话。因此,如果您在终端中导出它,您将在同一个终端上使用它。
如果您想永久导出,可以尝试here列出的解决方案
【解决方案3】:
您可以在实例化客户端时直接放置 JSON 凭据的路径,方法是将其作为参数传递。
例如:
const client = new speech.SpeechClient( {keyFilename: "credential_google.json"});
另外,对我来说,在终端中设置它不起作用。
【解决方案4】:
不建议在本地使用 .json 配置文件。我已经看到生产服务器上的这些泄漏导致整个平台被删除+引入环境切换和安全问题。
设置 Google Cloud CLI。
现在服务器将“查看”本地环境并使用它。
如果您收到错误“无法在当前环境中检测到项目ID。”,则表示身份验证库找不到项目默认 id。
无论环境变量和您正在运行的项目如何,您都需要在 Google Cloud 中设置一个基础项目。
运行
gcloud config set project [some-project-id]
现在如果你运行(节点示例)
"dev": "NODE_ENV=dev GCP_PROJECT=some-project-id nodemon index.ts",
它将加载项目环境。这也使您可以通过以下方式更轻松地进行部署:
"deploy:dev": "y | gcloud app deploy --project some-dev-project app.yaml",
"deploy:prod": "y | gcloud app deploy --project some-prod-project app.yaml"
App 引擎在标准环境下自动设置安全性。借助 flex,您可以使用 Google 提供的管理图片之一。