Google存储不是构造函数错误

Dom*_*nes 7 node.js google-cloud-storage firebase google-cloud-functions

我正在构建一个应用程序,我的目标是每当有人将图像上传到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);
....
Run Code Online (Sandbox Code Playgroud)

当我尝试部署此功能时,我收到此错误:

Error: Error occurred while parsing your function triggers.

TypeError: Storage is not a constructor
Run Code Online (Sandbox Code Playgroud)

我试过"新存储()"或只是"存储",没有任何作用.

我是新手,所以如果有什么我忘了你调试这个让我知道.

谢谢!


google-cloud/storage:2.0.0

节点js:v8.11.4

Dou*_*son 23

云存储API文档建议您应使用require来加载模块:

const Storage = require('@google-cloud/storage');
Run Code Online (Sandbox Code Playgroud)

这适用于版本2.x之前的云存储版本.

在2.x中,API发生了重大变化.你现在需要这样做:

const { Storage } = require('@google-cloud/storage');
Run Code Online (Sandbox Code Playgroud)

如果您想要TypeScript绑定,请考虑通过Firebase Admin SDK使用云存储. Admin SDK只包装云存储模块,并导出类型绑定以与其一起使用.它易于使用:

import * as admin from 'firebase-admin'
admin.initializeApp()
admin.storage().bucket(...)
Run Code Online (Sandbox Code Playgroud)

admin.storage() 为您提供对您尝试使用的Storage对象的引用.

  • 我必须使用它并将令牌传递给构造函数```const storage = new Storage({keyFilename:“ jorge-dashboard-v1-9dcf1f36dd34.json”});``` (2认同)