【问题标题】:Cloud Storage API doesn't work when deploy on Google Cloud Functions using Firebase使用 Firebase 在 Google Cloud Functions 上部署时,Cloud Storage API 不起作用
【发布时间】:2018-05-02 08:16:38
【问题描述】:

这在本地服务中与 firebase 完美配合:

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;

我有点迷路了,请帮帮我!

【问题讨论】:

    标签: firebase google-cloud-storage google-cloud-functions


    【解决方案1】:

    如果您只是使用默认凭据初始化 Firebase Admin SDK,然后通过它访问 Cloud Storage API,会更容易。无需自行初始化 Storage。

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

    这里,bucket 是您的项目默认存储桶,就像您从 Cloud Storage API 获取它一样。

    请注意,使用 firebase-functions@1.0.0 或更高版本(当前为 1.0.2)时,可以使用 Admin SDK 的无参数初始化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 2020-11-03
      • 2020-03-31
      • 2021-01-27
      • 2019-12-30
      • 1970-01-01
      • 2017-08-27
      相关资源
      最近更新 更多