Laravel迁移Vite时,import.meta.glob仅导入部分图片文件求助
解决Laravel迁移Vite后图片未全部复制到public目录的问题
以下是几个排查和解决的方向:
修正glob导入参数:
import.meta.glob('../images/**')默认是懒加载模式,Vite不会主动打包所有匹配的资源,需要添加{ eager: true }参数强制全部导入,改为:import.meta.glob('../images/**', { eager: true });这样构建时会遍历
images目录下所有文件(包括子目录)并打包到public。检查Blade中图片的引用方式:确保你没有直接写静态路径,而是使用Vite提供的辅助函数来引用图片,比如:
<img src="{{ Vite::asset('resources/images/local_icon.png') }}" alt="Local Icon">或者使用
@asset指令:<img src="@asset('resources/images/local_icon.png')" alt="Local Icon">直接写
images/local_icon.png会导致Vite无法匹配到manifest里的哈希文件名,从而报错。添加特殊图片格式到Vite配置:如果未被导入的图片是不常见格式,需要在
vite.config.js中配置assetsInclude来让Vite识别:export default defineConfig({ plugins: [laravel()], assetsInclude: ['**/*.png', '**/*.jpg', '**/*.gif', '**/*.webp'], // 按需添加格式 });清除缓存并重新构建:删除
public/build目录和node_modules/.vite缓存目录,然后重新执行构建命令:rm -rf public/build node_modules/.vite npm run build检查文件名和路径大小写:如果部署在Linux服务器上,文件名大小写是敏感的,确保Blade中引用的路径和实际图片文件名的大小写完全一致(比如
Local_Icon.png和local_icon.png是两个不同文件)。
内容的提问来源于stack exchange,提问作者Jeremy Belolo
相关产品推荐
相关产品推荐

