根本原因是public/build/manifest.json缺失、格式非法或@vite指令未正确注入——vite生产环境完全依赖该文件将resources/css/app.css映射为带哈希的真实路径,缺则css必404;须确认manifest存在且合法、@vite参数为数组且路径以resources/开头、指令位于模板顶层、css入口被laravel()显式声明且文件真实存在。

Laravel Vite打包后CSS文件找不到,根本不是路径写错了,而是public/build/manifest.json缺失、格式非法,或@vite指令未正确注入带哈希的CSS链接——Vite在生产环境完全依赖manifest.json把resources/css/app.css映射成/build/assets/app.abc123.css这样的真实路径,缺它或错它,CSS必然404。
确认manifest.json是否存在且合法
运行npm run build后,立即检查public/build/manifest.json是否真实存在、非空、JSON格式正确。打开该文件,确认里面至少有一组键值对,例如"resources/css/app.css": "assets/app.e8f2d4a5.css";同时去public/build/assets/目录下,手动验证对应文件app.e8f2d4a5.css是否真的存在。
如果public/build/整个目录为空,说明vite build根本没执行成功,或者laravel-vite-plugin未生效——常见于装错插件(比如装了vite-plugin-laravel而非laravel-vite-plugin),或vite.config.js中漏掉了laravel()插件调用。
【必须确保vite.config.js中plugins数组里包含laravel(['resources/js/app.js', 'resources/css/app.css']),且该数组中每个路径都真实存在】
检查Blade模板中@vite写法是否合规
方法一:参数必须是数组,且路径以resources/开头
@vite(['resources/css/app.css']) ✅ 正确;@vite('resources/css/app.css') ❌ 静默报Array to string conversion;@vite(['./resources/css/app.css']) ❌ 路径带./,laravel-vite-plugin无法识别入口。
方法二:@vite指令不能嵌套在任何Blade逻辑块内
必须直接写在模板顶层,例如放在
最开头:@vite(['resources/css/app.css', 'resources/js/app.js'])
不能写在@if、@section、@push等指令内部,否则Blade编译阶段无法解析,导致生产环境无任何注入。
方法三:确认它位于可被渲染的主布局中
如果只在某个子页面blade文件里写了@vite,但该页面继承的layouts.app.blade.php里没有@yield('scripts')或类似占位符,那注入的link标签根本不会输出到HTML中——检查所有相关模板层级,确保@vite所在位置最终能出现在最终渲染的HTML
里。验证CSS是否被真正打包进产物
第一步:检查vite.config.js中build.rollupOptions.output.entryFileNames是否被意外修改
默认情况下,Vite会把CSS打包进assets/目录并生成独立.css文件;如果手动加了rollupOptions且设了entryFileNames: '[name].js',可能强制把CSS也塞进JS里(即CSS in JS),导致public/build/assets/下根本没有.css文件。删掉自定义rollupOptions或显式加上assetFileNames: 'assets/[name].[hash].[ext]'即可恢复。
第二步:确认CSS源文件未被空import或条件注释屏蔽
打开resources/css/app.css,检查顶部是否有// @ts-ignore、/* DISABLED */之类注释,或是否被包裹在@media (false) { ... }等无效规则中——Vite会跳过“不可用”的样式块,导致最终产物为空。
第三步:运行npx vite build --debug,观察控制台输出
若看到[vite] Manifest is disabled或[laravel-vite-plugin] No entry files found,说明插件未启动或入口路径配置失败;此时需回到vite.config.js,确认laravel()插件调用时传入的数组路径与磁盘实际路径一字不差,包括大小写和扩展名。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











