Google Storage is not a constructor error
Clash Royale CLAN TAG#URR8PPP
Google Storage is not a constructor error
I am building an App and my objective is every time someone upload an image to firebase storage, the cloud function resize that image.
...
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);
....
And when I tried to deploy this funtion I get this error:
Error: Error occurred while parsing your function triggers.
TypeError: Storage is not a constructor
I tried with "new Storage()" or just "Storage" and nothing works.
I'm newbie around here so if there's anything I forgot for you to debug this just let me know.
Thanks!
google-cloud/storage: 2.0.0
Node js: v8.11.4
1 Answer
1
The API documentation for Cloud Storage suggests that you should use require to load the module:
const Storage = require('@google-cloud/storage');
This applied to versions of Cloud Storage prior to version 2.x.
In 2.x, there was a breaking API change. You need to do this now:
const Storage = require('@google-cloud/storage');
If you would like TypeScript bindings, consider using Cloud Storage via the Firebase Admin SDK. The Admin SDK simply wraps the Cloud Storage module, and also exports type bindings to go along with it. It's easy to use:
import * as admin from 'firebase-admin'
admin.initializeApp()
admin.storage().bucket(...)
admin.storage()
gives you a reference to the Storage object that you're trying to work with.
admin.storage()
Incidentally, the 2.x version of @google-cloud/storage requires you to do this now:
const Storage = require(...)
– Doug Stevenson
Sep 7 at 20:33
const Storage = require(...)
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
Work like a charm! Love your tutorials, thanks a lot!
– Domingos Nunes
Sep 6 at 16:19