我有两个firebase函数项目: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;
您还可能需要检查firebase.json
文件,以确认是否已将其配置为指示所需的云功能。
除此之外,以下两个类似的案例可能会为您提供一些关于如何更好地组织和构建不同云函数文件的见解。
- Firebase函数从其他文件导入函数-javascript
- 声明单独的Firebase Cloud函数,并且仍然使用Express.js
如果这些信息对您有帮助,请告诉我!