firebase 我怎样才能在我的云计算功能中获得一个google云存储桶的引用呢?

hec6srdp  于 2023-03-19  发布在  Go
关注(0)|答案(2)|浏览(142)

我正在尝试复制指南示例:图像变换。
我很好,直到我需要打电话:

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);
  ...
}

属性“bucket”在类型“typeof Storage”上不存在。您是指“Bucket”吗?
我也试过:

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

编译,但执行时出现错误:
gcs.存储不是构造函数
看起来好像API已经更改,但我更新到了最新版本:

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

如何获得对Bucket的引用以便调用?:

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

2vuwiymt1#

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

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

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

您必须使用在Firebase中生成的service-key.json,如云函数官方示例https://github.com/firebase/functions-samples/tree/master/generate-thumbnail中所述
转到Firebase控制台,选择齿轮图像〉项目设置〉服务帐户,然后单击生成新私钥以下载服务帐户密钥JSON文档。
此外,错误消息很可能意味着您必须创建存储示例。

tyu7yeag

tyu7yeag2#

有同样的问题,这是我怎么做到的:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import * as path from 'path'
import * as os from 'os'
import * as child_process from 'child_process'
import * as fs from 'fs'

admin.initializeApp(functions.config().firebase);

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

   const bucket = admin.storage().bucket(object.bucket);

.....

相关问题