Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase:如何在HTTP函数下动态包含模块_Javascript_Firebase_Google Cloud Functions - Fatal编程技术网

Javascript Firebase:如何在HTTP函数下动态包含模块

Javascript Firebase:如何在HTTP函数下动态包含模块,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,我正试图在Firebase上构建一个开源库,其中包含一些功能,人们可以克隆并部署到自己的Firebase安装中。我们的功能允许用户选择带有JSON配置文件的模块集合,然后对于选择的每个模块,我们的functions/index.js应该将该功能作为HTTP函数加载。文件将如下所示 {modules: [{ name: 'ModuleOne', options: { something: true } }, { name: 'ModuleThree'

我正试图在Firebase上构建一个开源库,其中包含一些功能,人们可以克隆并部署到自己的Firebase安装中。我们的功能允许用户选择带有JSON配置文件的模块集合,然后对于选择的每个模块,我们的functions/index.js应该将该功能作为HTTP函数加载。文件将如下所示

{modules: [{
    name: 'ModuleOne',
    options: {
        something: true
    }
}, {
    name: 'ModuleThree',
    options: {
        something: false
    }
}, {
    name: 'ModuleFour',
    options: {
        something: true
    }
}]}
firebase云函数的HTTP URL如下所示:

我们如何创建一个firebase云函数,允许我们动态选择这样的HTTP模块,并基于此配置启用它们?我们可以在ProjectName下嵌套动态模块路径,因此我们可能有一个单独的函数,它使用一个路由器,在该路由器下我们可以动态添加路径来加载我们的模块?

我认为您在这里寻找的基本上是创建一个HTTP函数工厂。这其实不是很难。您可以执行以下操作:

const functions = require('firebase-functions');
const express = require('express');

module.exports = function(options) {
  const app = express();
  options.modules.forEach(moduleConfig => {
    // add express routes for each module
  });
  return functions.https.onRequest(app);
};
然后开发人员会像这样使用您的库:

const yourlib = require('yourlib');

exports.someFnName = yourlib({
  modules: [
    {name: 'ModuleOne', options: {}}
  ]
});

我不清楚你想做什么。在这种情况下,模块究竟是什么?来自npm的节点模块?