Node.js生产项目通过pm2启动失败,报MODULE_NOT_FOUND错误
解决PM2启动Node.js项目报MODULE_NOT_FOUND错误
问题定位
从错误日志可明确核心问题:
- 错误类型:
MODULE_NOT_FOUND(模块未找到) - 触发位置:
/DATA/rabbitmq/util/tools.js文件第2行第19位的require语句 - 调用链路:
index.js→loadEnv.js→tools.js,最终在tools.js中无法找到指定依赖模块
排查与修复步骤
检查tools.js的依赖引入
打开/DATA/rabbitmq/util/tools.js,定位第2行的require代码,逐一确认:- 模块名称拼写是否准确(Node.js对模块名/路径大小写敏感)
- 本地文件模块:相对路径是否正确(需基于tools.js所在目录,比如
./utils或../config,避免绝对路径写错) - npm第三方模块:确认该模块是否已安装
验证依赖安装状态
进入项目根目录/DATA/rabbitmq,执行命令检查目标模块:npm list 模块名称若提示模块不存在,执行生产环境安装:
npm install 模块名称 --production确认PM2启动工作目录
避免因工作目录错误导致相对路径解析失败:- 查看当前PM2应用配置:
pm2 show index - 若工作目录不符,删除旧应用后重新指定目录启动:
pm2 delete index pm2 start index.js --name index --cwd /DATA/rabbitmq
- 查看当前PM2应用配置:
清理PM2缓存并重启
缓存异常可能导致模块加载失败,执行以下操作:pm2 delete index pm2 flush pm2 start index.js --name index
修复验证
执行命令确认进程状态:
pm2 status
若进程状态显示online,再查看日志确认无错误:
pm2 logs index
内容的提问来源于stack exchange,提问作者Mercedes Aguilar
相关产品推荐
相关产品推荐

