You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

关键配置文件内容

  1. functions/package.json
    指定了主入口为src/index.js,Node版本匹配本地环境:
{
  "name": "functions",
  "main": "src/index.js",
  "engines": {
    "node": "20"
  },
  // 其他依赖项...
}
  1. backend/firebase.json
    指定了Functions的源码目录:
{
  "functions": {
    "source": "functions"
  },
  // 其他配置...
}
  1. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 09:29:38