I am trying to replicate the guide Example: image transformation.
I'm ok until I need to call:
import * as gcs from '@google-cloud/storage';
import * as functions from 'firebase-functions';
export const onFileChange = functions.storage.object().onFinalize(object => {
// this line throws a TypeScript Error
const destBucket = gcs.bucket(fileBucket);
...
}
Property 'bucket' does not exist on type 'typeof Storage'. Did you mean 'Bucket'?
I also tried:
const destBucket = new gcs.Bucket(new gcs.Storage({}), object.bucket);
this compiles but when executing I get an error:
gcs.Storage is not a constructor
It seems as if the API has changed, but I'm updated to the latest versions:
"@google-cloud/storage": "^1.6.0",
"firebase-functions": "^1.0.2",
How can I get a reference to the Bucket so that I can call?:
destBucket
.file(filePath)
.download({ destination: tempFilePath })
.then(() => { ... })
Have you declared gcs with a config object like:
const config = {
projectId: '....',
keyFilename: './.......-adminsdk-0vlsn-34c393497c.json'
};
const storage = require('@google-cloud/storage')(config);
You have to use a service-key.json generated in Firebase, as explained in this Cloud Functions official sample https://github.com/firebase/functions-samples/tree/master/generate-thumbnail
"Go to the Firebase Console, select the gear image > project settings > Service Accounts and click Generate New Private Key to download a Service Account Key JSON document."
In addition the error message most probably means that you have to create an instance of Storage.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With