Firebase云功能-@ google-cloud /存储初始化

Aas*_*uli 2 google-cloud-storage firebase google-cloud-functions

这里的第一个问题。

我正在尝试编写一个Firebase云函数来压缩文件。我在网络上浏览了很多示例,但是我的代码始终陷入两点。

1.const {gcs} =require('@google-cloud/storage')();
Run Code Online (Sandbox Code Playgroud)

当我在require中使用此构造时,出现以下错误

TypeError:require(...)不是一个函数

如果我将其更改为 const {gcs} =require('@google-cloud/storage');错误会消失,但显然该对象未初始化,因为在尝试像这样访问它时收到此错误

TypeError:无法读取cloudFunctionNewSignature(/ user_code / node_modules / firebase-functions / lib / cloudFunction(/user_code/node_modules/firebase-functions/lib/cloud-functions.js:135:20)处的cloudFunction(/user_code/node_modules/firebase-functions/lib/cloud-functions.js:135:20)处的cloudFunction() process._tickDomainCallback(内部/进程/next_tick.js:135:7)

这是我像这样使用gcs的行

const destBucket = gcs.bucket(bucket); 其中bucket是object.bucket返回(对象由onFinalize返回)。

有人可以告诉我如何初始化存储,以便它可以工作并返回有效的对象。

我的node.js版本是8.12.0 firebase版本是5.1.1

Dou*_*son 5

2.x文档显示了这一点:

const {Storage} = require('@google-cloud/storage');
Run Code Online (Sandbox Code Playgroud)

您在需求()之后添加,发现需求不正确。

然后,您可以像这样初始化它:

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

// Creates a client
const storage = new Storage({
  projectId: projectId,
});
Run Code Online (Sandbox Code Playgroud)

如果您在Cloud Functions或其他Google环境中运行,则可能不需要指定项目ID。

之后,您可以获得对默认存储桶的引用:

storage.bucket()
Run Code Online (Sandbox Code Playgroud)

您还可以使用Admin SDK调用相同的云存储API:

const admin = require('firebase-admin');
admin.initializeApp();
const storage = admin.storage();
storage.bucket();
Run Code Online (Sandbox Code Playgroud)