Heroku部署NestJS项目:构建成功但启动失败访问报错求助
解决Heroku部署NestJS时
nest: not found错误 问题根源
日志中/tmp/start-7b018378.sh: 1: nest: not found明确说明:Heroku运行环境未全局安装Nest CLI,而你的npm start脚本直接调用nest start,导致命令无法被识别。
修复方案
方案1:使用编译后的产物启动(推荐生产环境)
NestJS生产部署优先用编译后的JS文件,无需依赖Nest CLI:
- 确保
package.json包含build脚本:
"scripts": { "build": "nest build", // 其他脚本 }
- 修改
start脚本为启动编译后的主文件:
"scripts": { "start": "node dist/main.js", // 其他脚本 }
- 确认
@nestjs/cli在devDependencies中(Heroku构建阶段会自动安装dev依赖执行build,构建完成后清理dev依赖,不影响生产运行):
"devDependencies": { "@nestjs/cli": "^x.x.x", // 其他开发依赖 }
方案2:调用本地Nest CLI启动(适合开发环境)
若需保留nest start的开发模式启动,修改start脚本调用项目本地的Nest CLI:
"scripts": { "start": "npx nest start", // 或使用绝对路径:"./node_modules/.bin/nest start" }
同时要将@nestjs/cli移至dependencies中(生产环境需要该依赖):
"dependencies": { "@nestjs/cli": "^x.x.x", // 其他生产依赖 }
验证操作
修改完成后提交代码到GitHub,触发Heroku Pipeline重新部署,查看日志确认启动命令正常执行,访问应用即可恢复。
内容的提问来源于stack exchange,提问作者Mohan Bhombe
相关产品推荐
相关产品推荐

