You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:41:04