NodeJS Google Vision 无法检测当前环境中的项目 ID

问题描述 投票:0回答:5

Ubuntu环境下,NodeJS Google Vision抱怨:

错误:无法在当前环境中检测到项目 ID。

即使我已经通过了json凭证

$ export GOOGLE_APPLICATION_CREDENTIALS=/var/credential_google.json"

请帮忙。

node.js google-vision
5个回答
13
投票

作为一个快速技巧,你可以尝试这个:

$ GOOGLE_APPLICATION_CREDENTIALS="/var/credential_google.json" node app.js

8
投票

不建议在本地使用 .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 提供的管理图像之一。


3
投票

如果您通常是 Windows 用户并尝试使用 Ubuntu(像我一样),则问题可能在于假设导出命令将变量导出到所有终端会话,并且您需要打开一个新终端才能使用它(如预期在 Windows 终端中的环境变量)。

  1. 导出命令不会将变量导出到另一个终端会话。因此,如果您在终端中导出它,则可以在同一终端上使用它。

  2. 如果您想永久导出它,那么您可以尝试此处列出的解决方案


1
投票

您可以在实例化客户端时直接将 JSON 凭证的路径作为参数传递。
例如:

const client = new speech.SpeechClient( {keyFilename: "credential_google.json"});

另外,对我来说在终端中设置它不起作用。


0
投票

请注意,请使用 GOOGLE_CLOUD_PROJECT 中的 .env 变量。 tks 迈克·鲁伊斯

© www.soinside.com 2019 - 2024. All rights reserved.