Google Storage不是构造函数错误

时间:2018-09-06 14:26:41

标签: node.js firebase google-cloud-storage google-cloud-functions

我正在构建一个App,我的目标是每次有人将图像上传到Firebase存储时,云功能都会调整该图像的大小。

...
import * as Storage from '@google-cloud/storage'
const gcs = new Storage()
...

exports.resizeImage = functions.storage.object().onFinalize( async object => {
   const bucket = gcs.bucket(object.bucket);
   const filePath = object.name;
   const fileName = filePath.split('/').pop();
   const bucketDir = dirname(filePath);
....

当我尝试部署此功能时,出现此错误:

Error: Error occurred while parsing your function triggers.

TypeError: Storage is not a constructor

我尝试使用“ new Storage()”或仅使用“ Storage”,但没有任何效果。

我是这里的新手,所以如果有什么我忘了给你调试的话,请告诉我。

谢谢!


google-cloud /存储:2.0.0

Node js:v8.11.4

1 个答案:

答案 0 :(得分:21)

API documentation for Cloud Storage建议您使用require来加载模块:

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

这适用于2.x之前的Cloud Storage版本。

在2.x版本中,API发生了重大变化。您需要立即执行以下操作:

const { Storage } = require('@google-cloud/storage');

如果您想要TypeScript绑定,请考虑通过Firebase Admin SDK使用Cloud Storage。 The Admin SDK simply wraps the Cloud Storage module,并同时导出类型绑定。易于使用:

import * as admin from 'firebase-admin'
admin.initializeApp()
admin.storage().bucket(...)

admin.storage()为您要使用的存储对象提供了参考。