Laravel部署到Heroku报错Vite manifest not found问题咨询
问题报错
部署Laravel项目到Heroku后页面抛出异常:Vite manifest not found at: /app/public/build/manifest.json,本地localhost环境运行正常,报错效果如下:
即使本地提前执行过以下命令,推送后问题依旧存在:
npm install npm run dev npm run build
根本原因
- Laravel默认在
.gitignore规则中排除了/public/build目录,本地执行npm run build生成的Vite构建产物(包含manifest.json)不会被Git提交,自然不会随代码推送到Heroku运行环境。 - Heroku默认使用的PHP构建包不会自动安装Node.js环境,也不会自动执行前端资源构建命令,就算移除了gitignore规则,若构建流程没适配,线上环境依然拿不到生产模式的Vite产物。
npm run dev是Vite开发服务启动命令,不会生成生产环境所需的静态构建文件,对解决这个报错没有实际作用。
可行修复方案
方案1:配置Heroku自动构建前端资源(推荐)
这是符合Heroku部署规范的长期方案,不需要提交构建产物到Git仓库:
- 给Heroku应用按顺序添加Node.js和PHP双构建包,先安装Node环境再处理PHP逻辑,在本地项目根目录执行Heroku CLI命令:
heroku buildpacks:add heroku/nodejs heroku buildpacks:add heroku/php
- 打开项目根目录的
package.json文件,确认存在build脚本,同时添加Heroku自动执行构建的配置项:
{ "scripts": { "dev": "vite", "build": "vite build" }, "heroku-run-build-script": true }
配置完成后重新推送代码到Heroku,部署流程会自动执行npm install和npm run build,生成的manifest.json和其他前端静态资源会直接放入运行环境的对应目录。
方案2:提交本地构建产物到仓库(应急用)
如果需要快速修复,可以临时调整忽略规则,把本地构建的产物提交到仓库:
- 打开根目录
.gitignore文件,删除或注释掉/public/build这一行规则 - 本地重新执行
npm run build,确认public/build/manifest.json文件存在 - 将
public/build目录下的所有文件提交到Git,重新推送到Heroku
注意:该方案每次修改前端代码后都需要本地重新执行build命令再提交,容易出现代码和线上资源不同步的问题,不建议长期使用。
方案3:清理线上缓存排除配置干扰
如果完成上述配置后依然报错,执行以下命令清理Heroku上的Laravel缓存:
heroku run php artisan config:clear heroku run php artisan cache:clear heroku run php artisan view:clear
避免本地生成的配置缓存被带到线上,导致Vite路径解析异常。
内容的提问来源于stack exchange,提问作者Solayman Mousa
相关产品推荐
相关产品推荐

