从另一个文件导入Admin SDK或函数会在Firebase函数中引发错误

时间:2018-07-04 14:40:07

标签: javascript firebase google-cloud-functions firebase-admin

我试图使在Firebase函数中处理单独文件更容易,但是,我遇到了两个问题。

首先,我将更具体地说明我要实现的目标:

在我的index.js中,我使用glob加载所有以.func.js结尾的文件,然后在从文件位置生成一个不错的导出名称之后,将它们添加到导出中。

我试图避免需要在每个函数中初始化Admin SDK, 所以我在一个名为admin.js的js文件中执行该操作,然后导出bucketdb

除此之外,我尝试将functions添加到admin.js的导出中。

现在出现问题:

  1. functions文件导入admin.js无效,由于某种原因,它未定义(下面的代码)。我可以通过直接从“ firebase-functions”导入函数来克服此问题,但我很好奇为什么它不起作用。

  2. admin.js初始化Admin SDK也不起作用,乍一看,这似乎是可行的,因为代码已部署,但是当事件触发功能时,我会收到错误消息:{{1 }}。

我的代码

index.js

Error: Bucket name not specified or invalid...

admin.js

import './admin';
import glob from 'glob';
import path from 'path';

const files = glob.sync('./**/*.func.js', {cwd: __dirname, ignore: './node_modules/**'});

for (let file of files) {
  // Generate nice looking names.
  // function in 'storage/assets/funcName.func.js' will be converted to 'storage_assets_funcName'
  const dirArray = file.split(path.sep);
  dirArray.splice(0, 1); // Remove the first item of the array(contains a dot).
  const functionName = dirArray.join('_').replace('.func.js', '');

  exports[functionName] = require(file).default;
}

函数示例:

import * as functions from 'firebase-functions'; // Needs to be here even if I dont export it.
import * as admin from 'firebase-admin';

admin.initializeApp();
const db = admin.firestore();
const bucket = admin.storage().bucket();

export default {
  functions,
  bucket,
  db
}

0 个答案:

没有答案