Ubuntu环境下,NodeJS Google Vision抱怨:
错误:无法在当前环境中检测到项目 ID。
即使我已经通过了json凭证
$ export GOOGLE_APPLICATION_CREDENTIALS=/var/credential_google.json"
请帮忙。
作为一个快速技巧,你可以尝试这个:
$ GOOGLE_APPLICATION_CREDENTIALS="/var/credential_google.json" node app.js
不建议在本地使用 .json 配置文件。我在生产服务器上看到这些泄漏导致整个平台被删除+引入环境切换和安全问题。
设置 Google Cloud CLI。
现在服务器将“查看”本地环境并使用它。
如果出现错误“Unable to detector a Project Id in the current environment.”,则表示 auth 库找不到该项目default 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 Engine 在标准环境下自动进行安全设置。通过 Flex,您可以使用 Google 提供的管理图像之一。
如果您通常是 Windows 用户并尝试使用 Ubuntu(像我一样),则问题可能在于假设导出命令将变量导出到所有终端会话,并且您需要打开一个新终端才能使用它(如预期在 Windows 终端中的环境变量)。
导出命令不会将变量导出到另一个终端会话。因此,如果您在终端中导出它,则可以在同一终端上使用它。
如果您想永久导出它,那么您可以尝试此处列出的解决方案
您可以在实例化客户端时直接将 JSON 凭证的路径作为参数传递。
例如:
const client = new speech.SpeechClient( {keyFilename: "credential_google.json"});
另外,对我来说在终端中设置它不起作用。
请注意,请使用 GOOGLE_CLOUD_PROJECT 中的 .env 变量。 tks 迈克·鲁伊斯