Heroku部署Laravel应用遇500错误:Vite资源缺失求助
解决Heroku部署Laravel应用出现的500错误(Vite资源找不到)
问题根源
本地开发时跑npm run dev是启动Vite开发服务器实时编译资源,但生产环境需要预先构建静态资源并生成Vite清单文件。你的Heroku部署流程里没执行生产构建步骤,导致系统找不到public/script.js,触发500错误。
修复步骤
- 确认package.json的构建脚本
打开项目根目录的package.json,确保包含生产构建命令:"scripts": { "dev": "vite", "build": "vite build", "preview": "vite preview" } - 配置Heroku的Buildpack顺序
因为Laravel同时依赖PHP和Node.js,得让Heroku先处理Node.js的构建:
打开Heroku CLI执行以下命令:
这样Heroku会先安装Node依赖、执行heroku buildpacks:add heroku/nodejs --index 1 heroku buildpacks:add heroku/php --index 2npm run build生成静态资源,再配置PHP环境。 - 检查环境变量
在Heroku控制台的环境变量里,确保APP_ENV设置为production——Vite会根据这个环境变量切换到生产模式,生成正确的资源清单。 - 修正Procfile
确保你的Procfile是生产环境的配置,不要包含开发相关命令,标准Laravel Procfile内容应该是:web: vendor/bin/heroku-php-apache2 public/ - 重新部署
把所有修改提交后,重新推送到Heroku:git add . git commit -m "Fix Vite production build on Heroku" git push heroku main
额外排查项
- 查看Heroku的构建日志,确认
npm run build是否成功执行,有没有资源编译报错 - 本地先执行
npm run build测试,看是否生成了public/build/manifest.json和对应的静态资源文件,确保本地构建流程正常 - 检查
.gitignore文件,不要排除public/build目录(或者让Heroku在构建时自动生成该目录,不需要提交到Git)
内容的提问来源于stack exchange,提问作者Thalyson
相关产品推荐
相关产品推荐

