Laravel & Vite问题:Vite manifest缺失部分favicon图标文件
Vite构建后favicon未纳入manifest的原因分析
问题背景
同一文件夹内有5个独立图标文件,执行npm run build生成Vite manifest文件后,favicon-32x32.png与favicon-16x16.png未被纳入。文件实际存在,但部署至生产环境后触发500错误,错误信息如下:
[2022-08-26 14:30:52] production.ERROR: Unable to locate file in Vite manifest: resources/images/favicon/favicon-32x32.png. {"view":{"view":"/home/forge/myproject/resources/views/app.blade.php","data":[]},"exception":"[object] (Spatie\LaravelIgnition\Exceptions\ViewException(code: 0): Unable to locate file in Vite manifest: resources/images/favicon/favicon-32x32.png. at /home/forge/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Vite.php:539)
可能的原因
- 资源未被项目入口关联引用:Vite的打包逻辑基于依赖树,只有被入口文件(如
resources/js/app.js)直接/间接引用的资源才会被纳入manifest。如果这两个favicon没有在JS、CSS文件,或是通过@vite指令关联的资源中被引用,Vite会判定它们为未使用资源,不会加入构建清单。 - 模板中引用方式错误:如果在Blade模板里直接用硬编码路径引用图标,而非通过
@vite('resources/images/favicon/favicon-32x32.png')或Vite::asset('resources/images/favicon/favicon-32x32.png')这类Laravel Vite提供的方法调用,Vite构建时无法识别到这些引用,自然不会将文件加入manifest。 - Vite配置存在排除规则:检查
vite.config.js中的assetsInclude配置,是否未将png格式或特定favicon文件名纳入扫描范围;或是publicDir等配置项设置异常,导致资源处理逻辑出错。 - 构建缓存干扰:本地构建时的旧manifest缓存未清理,导致新的图标文件未被正确扫描。可以尝试删除
public/build目录后重新执行npm run build。
内容的提问来源于stack exchange,提问作者Luke Snowden
相关产品推荐
相关产品推荐

