Облачное хранилище API не работает при развертывании в облачных функциях Google с использованием Firebase - PullRequest
0 голосов
/ 02 мая 2018

Эта работа прекрасно работает в локальной сети с огненной базой:

const gCloudConfig = {
  projectId: 'XXXX-X1234',
  keyFilename: './key.json'
}
const Storage = require('@google-cloud/storage')(gCloudConfig);
const storageBucket = Storage.bucket(bucketUrl);

storageBucket.upload(file.path, {destination: file.name})
  .then(() => {
    //
  });

Но это не работает при развертывании в firebase:

const Storage = require('@google-cloud/storage')();
const storageBucket = Storage.bucket(bucketUrl);

storageBucket.upload(file.path, {destination: file.name})
  .then(() => {
    //
  });

Я поставил эту строку после admin.initializeApp(...), так как я видел, что это исправило проблему для кого-то, но она все еще не работает.

Я много чего перепробовал:

const gCloudConfig = { projectId: 'XXXX-X1234' };
const gCloudConfig = { key: API_KEY };
const gCloudConfig = { key: API_KEY, projectId: 'XXXX-X1234' };
const gCloudConfig = functions.config().firebase;

Я немного растерялся, пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 02 мая 2018

Проще, если вы просто инициализируете Firebase Admin SDK с его учетными данными по умолчанию, а затем получаете доступ к API Cloud Storage через него. Нет необходимости инициализировать хранилище самостоятельно.

const admin = require('firebase-admin')
admin.initializeApp()
const bucket = admin.storage().bucket()
bucket.upload(localPath, {
    destination: remotePath
})

Здесь bucket - это хранилище по умолчанию для вашего проекта, точно так же, как вы получили бы его из API облачного хранилища.

Обратите внимание, что init-аргумент Admin SDK без аргументов доступен при использовании firebase-functions@1.0.0 или новее (текущий 1.0.2).

...