Heroku部署Node.js项目报MODULE_NOT_FOUND错误求助
问题排查与解决方案
报错MODULE_NOT_FOUND的触发点在db.js的依赖加载阶段,而非你之前调整的启动路径,你可以按照以下优先级排查:
- 第一优先级检查
/src/config/config.json是否提交到代码仓库
大部分开发者会将配置目录加入.gitignore规则,导致Heroku部署时拉取不到该文件,直接触发找不到模块的报错。如果你是出于安全考虑不想提交配置文件,可以直接删除db.js里读取本地配置的逻辑,全量使用Heroku环境变量配置Sequelize即可。 - 检查生产依赖是否完整
确认sequelize、mysql2两个依赖都在package.json的dependencies字段下,而非devDependencies。Heroku默认部署时不会安装开发依赖,如果你之前安装时加了--save-dev参数,就会出现生产环境找不到模块的问题,执行以下命令修正即可:npm install sequelize mysql2 --save - 你的Procfile配置本身没有问题,
web: node src/index.js的写法是合法的,不需要再调整启动路径。 - 若以上步骤都未解决,可直接在Heroku控制台进入远程终端,执行
ls /app/src确认所有部署文件是否完整,再手动执行node src/index.js查看完整报错信息,即可精准定位缺失的模块。
内容的提问来源于stack exchange,提问作者Alejandro Urbina
相关产品推荐
相关产品推荐

