我正在尝试复制指南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);
...
}
物业'桶'类型' typeof Storage'上不存在。你是说' Bucket'?
我也尝试过:
const destBucket = new gcs.Bucket(new gcs.Storage({}), object.bucket);
这个编译但是在执行时我得到一个错误:
gcs.Storage不是构造函数
似乎API已更改,但我已更新到最新版本:
"@google-cloud/storage": "^1.6.0",
"firebase-functions": "^1.0.2",
如何获取对Bucket的引用以便我可以调用?:
destBucket
.file(filePath)
.download({ destination: tempFilePath })
.then(() => { ... })
答案 0 :(得分:1)
您是否使用如下配置对象声明了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控制台,选择齿轮图像>项目设置>服务帐户,然后单击生成新私钥以下载服务帐户密钥JSON文档。"
此外,错误消息很可能意味着您必须创建存储实例。
答案 1 :(得分:0)
遇到了同样的问题,这就是我的解决方法:
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);
.....