如何修复Vite部署时manifest not found报错
Vite 部署后提示
Vite manifest not found at: /app/public/build/manifest.json 排查方案 这个报错的核心原因是生产环境下,后端框架(绝大多数场景是使用Laravel Vite插件的Laravel项目)无法读取Vite生产构建生成的资源清单文件,本地运行正常是因为本地开发走npm run dev热更新模式,不需要生成manifest文件,按以下方向逐一排查即可:
- 确认部署流程包含生产构建步骤
绝大多数该报错都是部署时漏了前端构建环节,直接上传了源码。部署到主机后必须在项目根目录执行生产构建命令:npm run build
构建完成后手动检查项目下public/build/目录,确认目录内存在manifest.json以及编译后的js、css静态资源文件。 - 核对站点路径配置与目录权限
报错提示的查找路径为/app/public/build/manifest.json,首先确认项目实际部署路径是否为/app,其次Laravel类项目必须将Web站点的运行根目录指向public文件夹,路径映射错误会直接导致文件查找失败。
同时检查public、public/build目录的读取权限,保证运行Web服务/PHP进程的用户(常见如www-data、nginx账户)有目录读取权限,常规设置755权限即可满足需求。 - 检查Vite构建输出配置
打开项目根目录的vite.config.js或vite.config.ts,确认build输出路径配置正确,默认配置下输出目录应为public/build,自定义修改过输出路径会导致框架按默认路径查找失败,标准配置参考:import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: ['resources/css/app.css', 'resources/js/app.js'], refresh: true, }), ], build: { outDir: 'public/build' } }); - 排查构建产物上传遗漏问题
检查项目根目录的.gitignore文件,若/public/build被加入忽略规则,通过Git部署时该目录不会被同步到生产主机。这种情况要么在生产主机本地执行构建命令生成产物,要么调整忽略规则(更推荐服务器本地构建,避免不同环境构建产物差异问题)。
如果是Docker容器化部署,检查多阶段构建流程是否漏拷贝前端构建产物:Node构建阶段跑完npm run build后,需要将生成的public/build目录拷贝到最终运行的PHP/Nginx镜像对应项目路径下。 - 清理框架缓存避免旧配置干扰
如果项目是从Laravel Mix迁移到Vite,或者之前修改过资源相关配置,执行以下命令清理Laravel缓存即可:
同时检查php artisan config:clear php artisan view:clear php artisan cache:clear.env中ASSET_URL静态资源地址配置,不要添加错误的路径前缀导致资源定位异常。
内容的提问来源于stack exchange,提问作者Masofke
相关产品推荐
相关产品推荐

