Firebase Functions 按规范拆分目录结构后部署提示“Cannot find module”错误求助
Firebase Functions 按规范拆分目录结构后部署提示“Cannot find module”错误求助
大家好,我最近按照官方文档的建议,把Cloud Functions从单个大的index.js拆成了结构化的目录,结果部署时一直遇到**"Cannot find module"**错误,折腾好久都没解决,来求助各位!
我的环境与配置
- firebase-tools:最新版本
- firebase-functions:v4.4.1
- Node.js:v20
项目结构
backend/ ├── functions/ │ ├── src/ │ │ ├── index.js <-- 主入口文件 │ │ ├── http/ │ │ │ └── myHttpFunction.js │ │ └── pubsub/ │ │ └── myPubSubFunction.js │ └── package.json └── firebase.json
关键配置文件内容
- functions/package.json
指定了主入口为src/index.js,Node版本匹配本地环境:
{ "name": "functions", "main": "src/index.js", "engines": { "node": "20" }, // 其他依赖项... }
- backend/firebase.json
指定了Functions的源码目录:
{ "functions": { "source": "functions" }, // 其他配置... }
- functions/src/index.js
这个文件负责加载并重新导出所有子目录里的函数:
const admin = require("firebase-admin"); admin.initializeApp(); exports.myHttpFunction = require('./http/myHttpFunction').myHttpFunction; exports.myPubSubFunction = require('./pubsub/myPubSubFunction').myPubSubFunction; // 其他函数的导出...
部署错误信息
当我执行firebase deploy --only functions时,所有函数都部署失败,错误信息如下:
Error: Cannot find module './http/myHttpFunction' Require stack: /workspace/src/index.js
明显能看出来,src目录没有被正确上传到Cloud Functions环境,导致云端的index.js里的require调用失败。
我已经尝试过但没用的方法
- 在package.json里添加
"files": ["src/"],没解决问题 - 确认过
main字段确实指向src/index.js,没有写错路径 - 试过修改firebase.json的Functions配置,不管是对象格式还是数组格式都没用
- 查看firebase-debug.log,发现CLI在打包项目时似乎忽略了src子目录
- 检查过权限(Owner、Cloud Functions Admin等),应该不是IAM的问题,就是文件打包的问题
看起来Firebase CLI在打包部署时,没有正确包含嵌套的src目录,导致云端找不到子模块。有没有人遇到过这个具体问题,找到可靠的配置修复方案?我真的不想回到把50多个函数都写在同一个index.js里的日子...
内容来源于stack exchange
相关产品推荐
相关产品推荐

