Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Upload file to google cloud storage with NodeJS

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 :/

like image 749
Pavel Havlík Avatar asked Feb 22 '18 03:02

Pavel Havlík


2 Answers

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.

like image 166
Daniel Rasmuson Avatar answered Nov 10 '22 08:11

Daniel Rasmuson


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);
    });
}
like image 25
REVANTH Mallavarapu Avatar answered Nov 10 '22 09:11

REVANTH Mallavarapu