我正在按照教程here进行GCS项目身份验证。我已通过服务帐户凭据下载,并且已导出GOOGLE_APPLICATION_CREDENTIALS
环境变量。为了安全起见,我明确地将API指向了我的文件。这是我所拥有的:
const {Storage} = require('@google-cloud/storage');
const storage = new Storage({
projectId: '{my_project_id}',
keyFilename: '{my_file_path}',
});
storage
.getBuckets()
.then(results => {
const buckets = results[0];
console.log('Buckets:');
buckets.forEach(bucket => {
console.log(bucket.name);
});
})
.catch(err => {
console.error('ERROR:', err);
});
当我用node运行它时,我得到的唯一输出是:
Buckets:
暗示我的存储已成功查询,没有找到存储桶。
但是有一些问题。我知道我的存储桶存在是因为我可以使用gsutil ls
正确查看我的所有存储桶。另外,如果将projectId
或keyFilename
字段更改为完全无效,则会得到相同的行为。
如果我没有通过身份验证,我会预料到某种错误,但是很明显,即使使用完全无效的密钥文件,它仍然不会产生错误。
我可以采取哪些步骤进行调试?没有错误代码,我没什么可继续的。
答案 0 :(得分:0)
我意识到问题在于我将文件路径指定为~/path/to/file
,因为~
并不意味着像bash这样的shell之外的任何东西。
我不知道为什么Node在这里默默地失败,而不是告诉我找不到文件,但这绝对是问题所在,它在提供完整路径后才起作用。