NodeJS Google Vision 无法在当前环境中检测到项目 ID。

17

在Ubuntu环境下,NodeJS Google Vision报错:

Error: Unable to detect a Project Id in the current environment.

即使我已经通过json凭据提供了信息。

$ export GOOGLE_APPLICATION_CREDENTIALS=/var/credential_google.json"

请帮忙。


看起来这个错误是在这里产生的,应该从文件中提取:https://github.com/googleapis/google-auth-library-nodejs/blob/master/src/auth/googleauth.ts#L194 你能再次检查服务帐户 JSON 文件的路径吗? - Brendan
@Arif Chasan,你解决了这个问题吗? - Nitin Karande
不要使用 .json 文件,我已经在下面发布了。 - Oliver Dixon
嗨,我在Windows环境下遇到了同样的问题,我通过以下方式解决了它。1- 设置GOOGLE_APPLICATION_CREDENTIALS=C:\keys<credential_google.json> 2- 在设置了上述环境变量的同一窗口中运行项目启动命令(npm run dev)。如果您尝试在不同的命令提示符中运行,则会出现上述错误。 - Nuwa
4个回答

14

如果你想快速地解决问题,你可以尝试这个方法:

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

8

不建议在本地使用 .json 配置文件。我看到过这些配置文件泄露到生产服务器上,导致整个平台被删除,同时也会带来环境切换和安全问题。

安装 Google Cloud CLI。

现在服务器将“查看”本地环境并使用它。

如果出现“无法在当前环境中检测到项目 ID”的错误,则表示认证库无法找到默认项目 ID。

您需要设置一个基本项目,无论您正在运行的环境变量和项目如何。

执行:

gcloud config set project [some-project-id]

现在如果你运行(node example)

"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提供的管理镜像之一。


截至目前,用于Node.js的Google Auth库的当前版本中,环境变量必须为GCLOUD_PROJECT或GOOGLE_CLOUD_PROJECT。 - Maikel Ruiz
这是正确的回应。谢谢。 - giorgio79

3
如果你通常使用Windows系统并尝试使用Ubuntu(就像我一样),那么问题可能在于假设export命令将变量导出到所有终端会话,并且需要打开一个新终端才能使用它(这在Windows终端中的环境变量中是预期的)。
1. export命令不会将变量导出到另一个终端会话。因此,如果你在一个终端中导出它,在同一个终端中使用。
2. 如果想要永久导出它,则可以尝试此处列出的解决方案。

1

当实例化客户端时,您可以直接将JSON凭据的路径作为参数传递。

例如:

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

另外,对于我来说,在终端中设置它并没有起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接