私はアプリを構築しています。私の目標は、誰かが画像を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
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オブジェクトへの参照を提供します。