Облачные функции Firebase - инициализация @ google-cloud / storage - PullRequest
0 голосов
/ 22 октября 2018

Первый вопрос здесь.

Я пытаюсь написать облачную функцию Firebase для сжатия файла.Я просмотрел множество примеров в Интернете, но мой код застревает в двух точках.

1.const {gcs} =require('@google-cloud/storage')();

Когда я использую эту конструкцию в require, я получаю следующую ошибку

TypeError:require (...) не является функцией

Если я изменю это значение на const {gcs} =require('@google-cloud/storage');, ошибка исчезнет, ​​но, видимо, объект не будет инициализирован, потому что я получаю эту ошибку, когда пытаюсь получить к ней доступ, например, так

TypeError: Невозможно прочитать свойство 'bucket' из undefined в exports.onfilechangecompressor.functions.storage.object.onFinalize.object (/user_code/index.js:21:27) в cloudFunctionNewSignature (/ user_code /node_modules / firebase-functions / lib / cloud-functions.js: 105: 23) в cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:135:20) в / var / tmp / worker /worker.js: 733: 24 at process._tickDomainCallback (internal / process / next_tick.js: 135: 7)

В этой строке я использую gcs следующим образом:

const destBucket = gcs.bucket(bucket); где bucket - это возвращенный object.bucket (объект is возвращается onFinalize).

Может кто-нибудь подсказать, пожалуйста, как инициализировать хранилище, чтобы оно работало и возвращало действительный объект.

Моя версия node.js - 8.12.0, версия firebase - 5.1.0,1

1 Ответ

0 голосов
/ 24 октября 2018

Документация для 2.x показывает это:

const {Storage} = require('@google-cloud/storage');

Вы добавляете () после запроса, который, как вы обнаружили, неверен.

Затем вы продолжаете инициализировать его следующим образом:

// Your Google Cloud Platform project ID
const projectId = 'YOUR_PROJECT_ID';

// Creates a client
const storage = new Storage({
  projectId: projectId,
});

Вам может не потребоваться указывать идентификатор проекта, если вы работаете в облачных функциях или других средах Google.

После этого вы можете получить ссылку на ваш контейнер по умолчанию:

storage.bucket()

Вы также можете использовать Admin SDK для вызова тех же API облачного хранилища:

const admin = require('firebase-admin');
admin.initializeApp();
const storage = admin.storage();
storage.bucket();
...