我们无法在Firebase云功能中编写多个文件

时间:2017-07-18 10:40:31

标签: firebase google-cloud-functions

我们如何使用Firebase云功能实现微服务架构 我们可以编写多个.js文件,而不像将所有函数写入index.js,这样我们就不需要在单个函数中重新部署所有函数以进行更改

3 个答案:

答案 0 :(得分:5)

我导入其他具有firebase功能的.js文件。只需将函数文件夹视为root,我就错误地尝试从/ functions父文件夹导入文件。

<强> index.js

var paymentFunctions = require('./payment_functions');

以及类似的内容:

exports.paymentMethodTask = functions.database.ref('/newPaymentMethodTask/{taskId}').onWrite(event => {
    return paymentFunctions.processPaymentMethodTask(event);
});

使用文件夹结构:

/myProject/functions/index.js
/myProject/functions/payment_functions.js

然后正常导出pay_functions.js中的函数:

module.exports = {
    processPaymentMethodTask: function test(event) {
        //do something here with the event
    }
};

https://medium.com/step-up-labs/our-experience-with-cloud-functions-for-firebase-d206448a8850

答案 1 :(得分:3)

必须在index.js文件中定义Firebase的所有云功能。但这并不意味着您必须在单个文件中实现所有功能。

我经常在单独的文件中实现每个函数的大部分内容。例如,如果我使用Google Cloud Vision API从图像中添加额外的文字,我将会ocr.js。我给这个文件一个主要部分,以便我可以使用node ocr.js从本地终端运行脚本。然后在我的index.js中,我需要的代码多于导入ocr.js并将其连接到云函数。

另见:

答案 2 :(得分:0)

您好,您可以通过以下方式执行此操作。

alpha.js

const functions = require('firebase-functions');
exports.alphaFunction = functions.https.onRequest((request, response) => {
   // Your code
});

index.js

const functions = require('firebase-functions');
var alphaFunction = require('./alpha');
exports.mainFunction = functions.https.onRequest((request, response) => {
    //Inside your main function
    exports.alphaFunction = alphaFunction.alphaFunction();
});