Javascript 如何将函数从一个firebase项目导入另一个firebase项目?
我有两个firebase功能项目:Javascript 如何将函数从一个firebase项目导入另一个firebase项目?,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,我有两个firebase功能项目:prod和infrainfra需要prod的所有功能,并有一些自己的功能(即infra是prod的严格超集)。目录结构大致如下: |---> myDirectory |---> infra | |---> functions | |---> src | |---> index.js // infra is TS |---> prod |---> fun
prod
和infra
infra
需要prod
的所有功能,并有一些自己的功能(即infra
是prod
的严格超集)。目录结构大致如下:
|---> myDirectory
|---> infra
| |---> functions
| |---> src
| |---> index.js // infra is TS
|---> prod
|---> functions
|---> index.js // prod is JS
如何将函数从prod
导入infra
?我试过了
// myDirectory/infra/functions/index.js
const { functionA } = require('../../prod/functions/index.js');
exports.functionA = functionA;
这在模拟器上运行良好,但在部署时会出现以下错误:
validateEventDocument
Provided module can't be loaded.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module '../../../prod/functions/index.js'
如果两个文件都位于同名的不同位置,则可能会导致导入问题。因此,我建议您对文件使用不同的名称,至少,因为所有目录结构都是相同的。正如在另一个类似案例中所阐明的,您导入的方式基本上是正确的,但是您的结构没有帮助在项目中导入云功能。我建议您将其更改为如下内容,然后尝试导入它们
|---> myDirectory
|---> infra
| |---> i_functions
| | |---> f_index.js
|---> prod
| |---> p_functions
| | |---> p_index.js
// myDirectory/infra/functions/index.js
const { functionA } = require('../../prod/p_functions/p_index.js');
exports.functionA = functionA;
您还可能需要检查您的文件,以确认它是否配置为指示您需要的云功能
除此之外,下面两个类似的案例可能会让您了解如何更好地组织和构造不同的云函数文件
如果这些信息对你有帮助,请告诉我 如果两个文件都位于同名的不同位置,则可能会导致导入问题。因此,我建议您对文件使用不同的名称,至少,因为所有目录结构都是相同的。正如在另一个类似案例中所阐明的,您导入的方式基本上是正确的,但是您的结构没有帮助在项目中导入云功能。我建议您将其更改为如下内容,然后尝试导入它们
|---> myDirectory
|---> infra
| |---> i_functions
| | |---> f_index.js
|---> prod
| |---> p_functions
| | |---> p_index.js
// myDirectory/infra/functions/index.js
const { functionA } = require('../../prod/p_functions/p_index.js');
exports.functionA = functionA;
您还可能需要检查您的文件,以确认它是否配置为指示您需要的云功能
除此之外,下面两个类似的案例可能会让您了解如何更好地组织和构造不同的云函数文件
如果这些信息对你有帮助,请告诉我 在堆栈溢出时,请不要显示文本的图片。将文本复制到问题本身,以便阅读、复制和搜索。在堆栈溢出时,请不要显示文本图片。将文本复制到问题本身,以便阅读、复制和搜索。为了澄清,我的项目实际上被称为
prod
和infra
。我不知道为什么我选择将其显示为堆栈溢出上的产品。让我对问题进行编辑,以澄清这一误导性细节。我还要尝试重命名索引文件,看看重命名索引文件是否有效。我认为根本原因是因为infra
有自己的package.json、.firebaserc和firebase.json,所以当我运行firebase deploy
时,myDirectory/prod/functions/index.js
的代码没有上传。是有希望的,但不是很清楚。你知道我在哪里可以找到更多关于需要本地模块的信息吗?嗨@MinhLam谢谢你确认索引。实际上,您的firebase.json
是一个需要检查的重要文件,我以为您已经检查过了。除此之外,我认为它与本地模块无关,因为这是一个不同的特性。如果你认为我的答案是有帮助的,请考虑投票。注意,FielBaseCLI不会在其功能文件夹之外部署任何东西。部署后,它不会合并文件夹源中的内容。所有代码都必须在那里,或者来自node_模块(仅来自一个项目),或者在package.json中定义了一些明确的源代码。@DougStevenson是的,这就是我发现的。我希望它能自动做到这一点,但似乎我现在唯一能做的就是重组目录系统。为了澄清,我的项目实际上被称为prod
和infra
。我不知道为什么我选择将其显示为堆栈溢出上的产品。让我对问题进行编辑,以澄清这一误导性细节。我还要尝试重命名索引文件,看看重命名索引文件是否有效。我认为根本原因是因为infra
有自己的package.json、.firebaserc和firebase.json,所以当我运行firebase deploy
时,myDirectory/prod/functions/index.js
的代码没有上传。是有希望的,但不是很清楚。你知道我在哪里可以找到更多关于需要本地模块的信息吗?嗨@MinhLam谢谢你确认索引。实际上,您的firebase.json
是一个需要检查的重要文件,我以为您已经检查过了。除此之外,我认为它与本地模块无关,因为这是一个不同的特性。如果你认为我的答案是有帮助的,请考虑投票。注意,FielBaseCLI不会在其功能文件夹之外部署任何东西。部署后,它不会合并文件夹源中的内容。所有代码都必须在那里,或者来自node_模块(仅来自一个项目),或者在package.json中定义了一些明确的源代码。@DougStevenson是的,这就是我发现的。我希望它能自动做到这一点,但似乎我现在唯一能做的就是重组目录系统。