React应用部署Heroku构建成功,运行报MODULE_NOT_FOUND模块缺失错误如何解决?
Heroku部署React应用MODULE_NOT_FOUND报错解决方案
从错误日志可直接定位核心问题:server.js第5行引入的./routes/api/users模块在Heroku运行环境中不存在,抛出MODULE_NOT_FOUND错误导致启动失败,按照以下步骤排查即可解决:
1. 检查文件存在性与大小写规则
- 首先核对本地项目中是否存在
routes/api/users.js(或.ts/.cjs等对应后缀的文件) - 重点注意文件名大小写:Windows、macOS系统默认文件名大小写不敏感,本地如果文件名为
Users.js,引入时写users.js也能正常运行,但Heroku使用Linux系统,大小写完全严格匹配,只要大小写不一致就会报找不到模块 - 检查该文件是否被写入
.gitignore规则,如果被忽略,推送到Heroku时不会上传该文件,自然无法找到
2. 核对引入路径的正确性
- 确认
server.js和routes文件夹的相对位置:如果二者都在项目根目录,./routes/api/users的写法是正确的;如果server.js存放在其他子目录,要对应调整相对路径层级 - 排查是否有多写/少写路径层级的问题,比如是否应该写成
../routes/api/users,和实际项目结构逐一核对即可
3. 直接验证Heroku部署包内容
如果本地检查所有配置都正确,可以直接进入Heroku运行容器查看实际部署的文件结构:
- 本地终端执行
heroku run bash登录你的应用运行环境 - 执行
ls命令查看文件列表,确认routes/api/users对应文件是否存在、server.js的存放位置是否符合预期 - 如果确认文件没有上传,回去检查git提交记录,确认该文件已经被正常commit到仓库后重新推送部署即可
其他罕见问题排查
- 如果你的路由文件存放在前端client目录下,部署时仅构建了前端静态资源,没有将后端路由文件纳入部署包,需要调整构建脚本,确保后端依赖的所有文件都被包含在部署包中
- 检查
package.json的scripts配置,确认start命令没有切换工作目录,避免相对路径计算失效
内容的提问来源于stack exchange,提问作者PREETHI RAJAMANI
相关产品推荐
相关产品推荐

