web-dev-qa-db-ja.com

Googleストレージはコンストラクタエラーではありません

私はアプリを構築しています。私の目標は、誰かが画像を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/storage:2.0.0

ノードjs:v8.11.4

7
Domingos Nunes

Cloud StorageのAPIドキュメント は、モジュールをロードするために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を使用することを検討してください。 Admin SDKは単純にCloud Storageモジュールをラップします 、それに合わせてタイプバインディングをエクスポートします。使い方は簡単です。

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

admin.storage()は、操作しようとしているStorageオブジェクトへの参照を提供します。

23
Doug Stevenson