javascript - 无法在多个文件中拆分 Firebase 函数

标签 javascript node.js firebase google-cloud-functions

我正在使用 firebase 函数并达到数百个函数,现在很难在单个 index.js 文件中管理它,如他们的许多示例所示

我试图将该函数拆分为多个文件,例如:

--firebase.json
--functions
  --node_modules
  --index.js
  --package.json
  --app
    --groupFunctions.js
    --authFunctions.js
    --storageFunctions.js

在这个结构中,我将我的函数分为三类,并放入这三个文件 groupFunctions.jsauthFunctions.jsstorageFunctions.js。然后我尝试在 index.js 中导入这些文件,但我不知道为什么它不适合我。

这里是 groupFunctions.js

var functions = require('firebase-functions');
module.exports = function(){
    exports.onGroupCreate = functions.database.ref('/groups/{groupId}')
        .onWrite(event => {
            console.log(`A group is created in database named:${event.params.groupId}.`);
            // some logic...
            //...
        })
}

这里是 index.js 文件:

var functions = require('firebase-functions');
module.exports = require("./app/groupFunctions")();

我的编辑器在这段代码中没有给出任何警告。但是当我使用 firebase deploy --only functions 部署此代码时,它不会部署功能。如果 Firebase 控制台上已存在某些功能,则会在部署时删除所有功能。

这是部署日志: enter image description here

问题也被问到 github

最佳答案

工作代码示例:

文件结构:

--firebase.json
--functions
  --node_modules
  --index.js
  --package.json
  --src
    --groupFunctions.js
    --authFunctions.js
    --storageFunctions.js

index.js 文件:

require('./src/groupFunctions.js')(exports);
require('./src/authFunctions.js')(exports);
require('./src/storageFunctions.js')(exports);

groupFunctions.js 文件:

var functions = require('firebase-functions');

module.exports = function (e) {
    e.onGroupCreate = functions.database.ref('/groups/{groupId}')
        .onWrite(event => {
            console.log(`A group is created in database named:${event.params.groupId}.`);
            // some logic...
            //...
        })
}

更新:现在我有更好的解决方案

完整的工作代码位于 https://github.com/malikasinger1/firebase-functions-with-typescript它是用 typescript 和 webpack 等尖端技术编写的。您可以将其用作样板/启动器。

关于javascript - 无法在多个文件中拆分 Firebase 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44432378/

相关文章:

javascript - ECMASscript 第五版中添加了方法,为什么要进行条件检查?

javascript - 图表 js 中的 Canvas 类中的错误

node.js - 在 Node JS 中引用具有相同局部作用域变量名称的全局作用域变量

node.js - 使用 Sequelize 更新时忽略密码 ' '

java - 在代码运行以更新值之前返回值的方法

java - 当从另一个 Activity 回调时,包含消息计数的 textView 返回 null

firebase - 如何在 Scoped Model 中从 Firestore 获取数据 - Flutter

javascript - 当某些值为真时 AngularJS ng-show

javascript - Mongoose 通过在引用中搜索自动填充数据

javascript - 在 Electron 中处理表单的正确方法是什么?