EC2实例运行Nest.js遇npm依赖冲突与命令执行错误求助
解决EC2上Nest.js项目的依赖冲突与启动失败问题
问题1:npm install 依赖冲突报错
执行npm install时触发ERESOLVE依赖冲突,核心诱因:
- 项目声明依赖
@nestjs/common、@nestjs/core等为v10.0.1,但@liaoliaots/nestjs-redis@9.0.5仅兼容NestJS v9,版本不匹配 package.json的engines字段要求Node.js版本>=16.0.0 <17.0.0,但实际运行环境是Node.js v20.3.0,环境版本不符合配置要求
解决步骤:
对齐Node.js版本
- 使用nvm安装指定版本:
nvm install 16 nvm use 16 - 若需保留Node v20,可修改
package.json的engines字段放宽限制:"engines": { "npm": ">=8.0.0", "node": ">=16.0.0" }
- 使用nvm安装指定版本:
修复Redis依赖版本冲突
- 升级
@liaoliaots/nestjs-redis到支持NestJS v10的版本:npm install @liaoliaots/nestjs-redis@^10.0.0 - 若不想升级NestJS,可统一降级所有
@nestjs/*依赖到v9.x,同步调整@nestjs/mongoose等关联依赖的兼容版本
- 升级
重新安装依赖
- 清理现有依赖缓存:
rm -rf node_modules package-lock.json npm cache clean --force - 执行安装(若仍有冲突,可临时用
--legacy-peer-deps跳过严格校验):npm install # 冲突未完全解决时使用 npm install --legacy-peer-deps
- 清理现有依赖缓存:
问题2:npm run start:dev 报错 spawn nest ENOENT
执行启动命令时提示找不到nest命令,原因是nest CLI未全局安装,且本地安装的CLI未被正确调用。
解决步骤:
方法1:修改package.json的scripts,调用本地安装的nest CLI
将脚本中的nest start替换为npx nest start,示例:
"scripts": { "start": "cross-env NODE_ENV=production npx nest start", "start:dev": "cross-env NODE_ENV=development npx nest start --watch", "start:debug": "npx nest start --debug --watch", // 其他脚本保持不变 }
方法2:全局安装对应版本的nest CLI
npm install -g @nestjs/cli@10.0.2
内容的提问来源于stack exchange,提问作者ytpm
相关产品推荐
相关产品推荐

