Heroku部署Next.js应用报错sh: 1: next: not found 本地运行正常
问题原因
日志输出的sh: 1: next: not found是核心报错,指Heroku运行环境无法定位到next命令的可执行文件,按以下步骤修复即可:
解决步骤
- 步骤1:补充Node.js版本约束
在你的package.json顶层添加engines字段,填写和你本地运行正常的Node.js、npm版本一致的配置,避免版本兼容导致的依赖安装异常,示例:
{ "private": true, "engines": { "node": "16.x", "npm": "8.x" }, "scripts": { // 保持你原有脚本不变 }, // 其余原有配置不变 }
- 步骤2:确认依赖安装路径调用
把package.json里的start脚本修改为直接调用本地node_modules下的next可执行文件,规避全局路径找不到的问题:
"start": "node_modules/.bin/next start -p $PORT"
- 步骤3:检查提交的文件
确保你已经把package-lock.json或者yarn.lock提交到了Git仓库,不要在.gitignore中忽略这两个文件,否则Heroku安装依赖时会出现版本不匹配,导致next没有正确安装到生产环境。 - 步骤4:排查环境变量配置
登录Heroku控制台查看你的应用环境变量,确认没有设置NPM_CONFIG_PRODUCTION=true或者YARN_PRODUCTION=true,这类配置会导致依赖安装逻辑异常。
内容的提问来源于stack exchange,提问作者Cuado
相关产品推荐
相关产品推荐

