8

My upload.js file contains the following code:

module.exports = {

    up: function () {
        const storage = require('@google-cloud/storage');
        const fs = require('fs');
        const gcs = storage({
            projectId: 'MY_PROJECT_ID',
            keyFilename: './service-account.json'
        });
        var bucket = gcs.bucket('MY_BUCKET');

        bucket.upload('picture.jpg', function(err, file) {
            if (err) throw new Error(err);
        });
    },
}

It works through the terminal but how do I call it on form submission button click or just from different file ?

When I try it gives me:

Cannot read property 'prototype' of undefined

I'm quite new to NodeJs and I don't really know what to do.
Google documentation doesn't help me at all unfortunately :/

Stphane
  • 3,276
  • 5
  • 31
  • 41
Pavel Havlík
  • 81
  • 1
  • 1
  • 2

2 Answers2

7

I would recommend moving your requires to the first line.

const storage = require('@google-cloud/storage');
const fs = require('fs');

module.exports = {
    up: function () {
        const gcs = storage({
            projectId: 'MY_PROJECT_ID',
            keyFilename: './service-account.json'
        });
        const bucket = gcs.bucket('MY_BUCKET');
        bucket.upload('picture.jpg', function(err, file) {
            if (err) throw new Error(err);
        });
    },
}

I would also console.log(storage) and confirm it is defined.

Daniel Rasmuson
  • 4,735
  • 5
  • 27
  • 43
2
const { Storage } = require('@google-cloud/storage');

const up = () => {
    const gcs = new Storage({
        projectId: 'xxxxxxxxx',
        keyFilename: './service-account.json'
    });
    const bucket = gcs.bucket('xxxxxxxxxx');
    bucket.upload('./test-rev.mkv', function (err, file) {
        if (err) throw new Error(err);
    });
}
Tarang
  • 74,439
  • 37
  • 212
  • 270