typescript - 如何在我的云功能中获取对谷歌云存储桶的引用?

标签 typescript firebase google-cloud-storage google-cloud-functions

我正在尝试复制指南 Example: image transformation .

我很好,直到我需要打电话:

import * as gcs from '@google-cloud/storage';
import * as functions from 'firebase-functions';

export const onFileChange = functions.storage.object().onFinalize(object => {

  // this line throws a TypeScript Error
  const destBucket = gcs.bucket(fileBucket);
  ...
}

Property 'bucket' does not exist on type 'typeof Storage'. Did you mean 'Bucket'?

我也试过:

const destBucket = new gcs.Bucket(new gcs.Storage({}), object.bucket);

这可以编译,但在执行时出现错误:

gcs.Storage is not a constructor

好像API变了,不过我已经更新到最新版本了:

"@google-cloud/storage": "^1.6.0",
"firebase-functions": "^1.0.2",

如何获取 Bucket 的引用以便调用?

destBucket
    .file(filePath)
    .download({ destination: tempFilePath })
    .then(() => { ... })

最佳答案

您是否使用如下配置对象声明了 gcs:

const config = {
    projectId: '....',
    keyFilename: './.......-adminsdk-0vlsn-34c393497c.json'
};

const storage = require('@google-cloud/storage')(config);

您必须使用在 Firebase 中生成的 service-key.json,如此 Cloud Functions 官方示例中所述https://github.com/firebase/functions-samples/tree/master/generate-thumbnail

“转到 Firebase 控制台,选择齿轮图像 > 项目设置 > 服务帐户,然后单击生成新私钥以下载服务帐户 key JSON 文档。”


此外,错误消息很可能意味着您必须创建存储实例。

关于typescript - 如何在我的云功能中获取对谷歌云存储桶的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50036513/

相关文章:

typescript - 在 NestJS 中使用与 GraphQL 中的 Input 和 Object 类型相同的类

javascript - 解决一个 promise 中的多个 promise

javascript - 从 Firebase 存储返回下载 URL 的函数

google-app-engine - 将 gsutil 授权为服务帐户

typescript - 在 typescript 中导出联合类型别名

angular - Angular 组件文件中的对象中的双引号问题

ios - Swift3/Firebase 数据库 : How can I get sub key of value?

java - 错误 :null value in entry: streamOutputFolder=null

json - 谁知道Google Cloud Storage JSON API授权周转时间?

ssl - 使用 SSL 的 Google App Engine 自定义域出现 404 错误