GCS NodeJS API请求返回空

时间:2019-05-23 03:24:20

标签: google-cloud-platform google-cloud-storage

我正在按照教程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正确查看我的所有存储桶。另外,如果将projectIdkeyFilename字段更改为完全无效,则会得到相同的行为。

如果我没有通过身份验证,我会预料到某种错误,但是很明显,即使使用完全无效的密钥文件,它仍然不会产生错误。

我可以采取哪些步骤进行调试?没有错误代码,我没什么可继续的。

1 个答案:

答案 0 :(得分:0)

我意识到问题在于我将文件路径指定为~/path/to/file,因为~并不意味着像bash这样的shell之外的任何东西。

我不知道为什么Node在这里默默地失败,而不是告诉我找不到文件,但这绝对是问题所在,它在提供完整路径后才起作用。