Firebase 函数从其他文件导入函数 - javascript

Posted

技术标签:

【中文标题】Firebase 函数从其他文件导入函数 - javascript【英文标题】:Firebase Function import function from other file - javascript 【发布时间】:2018-10-19 01:22:23 【问题描述】:

我正在使用 javascript 构建 firebase 函数。现在我有很多内部调用函数,我计划将这些函数移动到不同的文件中,以避免 index.js 变得非常混乱。

所以下面是当前的文件结构:

/functions
   |--index.js
   |--internalFunctions.js
   |--package.json
   |--package-lock.json
   |--.eslintrc.json

我想知道:

1) 如何从 internalFunctions.js 中导出函数并导入 index.js。

2) 如何从 index.js 调用 internalFunctions.js 函数。

我的代码是用 JavaScript 编写的。

已编辑

internalFunction.js 将有多个函数。

【问题讨论】:

已经在这里回答:***.com/questions/43486278/… 哪一个是合适的解决方案?因为接受的答案的评论实际上告诉了我的担忧,我不想在 index.js 中再次导出 internalFunctions.js 函数。我只想从 index.js 调用 internalFunctions.js 中的函数。 对不起,我应该更明确一点,我添加了一个答案,您可以看到导入与帖子相同,只是您需要使用不同的方式。 【参考方案1】:

首先在文件中设置函数:

internalFunctions.js:

module.exports = 
    HelloWorld: function test(event) 
        console.log('hello world!');
    
;

或者如果你不喜欢花括号:

module.exports.HelloWorld = function(event) 
    console.log('hello world!');


module.exports.AnotherFunction = function(event) 
    console.log('hello from another!');

您还可以使用其他样式: https://gist.github.com/kimmobrunfeldt/10848413

然后在您的 index.js 文件中将该文件作为模块导入:

const ifunctions = require('./internalFunctions');

然后您可以直接在触发器或 HTTP 处理程序中调用它:

ifunctions.HelloWorld();

示例:

//Code to load modules 
//...
const ifunctions = require('./internalFunctions');

exports.myTrigger = functions.database.ref('/myNode/id')
    .onWrite((change, context) => 

      //Some of your code...        

      ifunctions.HelloWorld();

      //A bit more of code...

);

【讨论】:

我还有一个问题,如何从 internalFunctions 调用 internalFunctions 的函数? (在同一个文件中) 使用module.exports.HelloWorld(); 或只使用exports.HelloWorld(); 我的意思是,在 HelloWorld() 函数中,我想调用 AnotherFunction() 来处理某些东西,我该如何调用它? 是的,在 internalFunctions.js 的函数中,您可以使用 module.exports.HelloWorld();调用本地函数。 如果您不喜欢它,您可以使用另一种方式声明和导出您的函数,例如答案链接中提供的函数:gist.github.com/kimmobrunfeldt/10848413

以上是关于Firebase 函数从其他文件导入函数 - javascript的主要内容,如果未能解决你的问题,请参考以下文章

从其他文件夹导入模块:如何在 Spyder 或 PyCharm 中显示函数参数?

如何通过云函数将图像存储在 Firebase 存储中

在 Flutter 中调用 Firebase 函数时出现 CloudFunctionsException

如何在 Vue3 中为 Firebase 调用云函数

为啥在 Typescript(Firebase 函数)中双重导入 NPM 包

直接从firebase函数临时文件夹下载