在 Vite 中配置图片资源的处理方式与 Webpack 有些不同,Vite 默认使用 vite-plugin-static-copy 或者内置的静态资源处理方式来支持图像、字体等资源。要解决 require is not defined 错误,你需要确保图片路径正确解析。

1. 基础配置

Vite 允许直接在模板中使用 import 来加载静态资源,并自动处理图片路径。对于你遇到的 <img> 标签的问题,可以使用动态 import 或 @ 别名配置。

配置步骤:
  1. 确保使用相对路径或静态路径:
    Vite 默认支持 import 来引入图片,并在构建时将图片资源正确处理。如果你使用 @ 别名,首先确保 Vite 配置了别名:

    // vite.config.js
    import { defineConfig } from 'vite';
    
    export default defineConfig({
      resolve: {
        alias: {
          '@': '/src',  // 确保 @ 指向 src 文件夹
        },
      },
    });
    
  2. 在模板中使用图片:
    在 Vite 中,你可以直接使用路径绑定方式来动态引用图片:

    <img
      :src="require('@/assets/images/buyer/empty-page.png')"
      alt="empty image"
    />
    

    或者通过 import 引入图片并动态绑定:

    <template>
      <img :src="imageSrc" alt="empty image" />
    </template>
    
    <script>
    import emptyImage from '@/assets/images/buyer/empty-page.png';
    export default {
      data() {
        return {
          imageSrc: emptyImage,
        };
      },
    };
    </script>
    

    在这种方式下,Vite 会自动处理图片路径,并将其解析为正确的 URL。

  3. Vite 配置中的其他细节:

    如果你需要自定义图片加载方式或处理更复杂的文件类型,Vite 提供了 asset 的配置选项,允许你控制资源的处理方式。你可以修改默认的图片处理规则:

    // vite.config.js
    export default defineConfig({
      build: {
        assetsInlineLimit: 4096,  // 超过 4KB 的图片将被处理为独立文件
      },
    });
    

2. 安装 Vite 插件(如果需要)

如果你需要更多功能(如处理自定义静态资源),你可以安装 vite-plugin-static-copy 来处理特定资源的静态复制:

npm install vite-plugin-static-copy --save-dev

然后在 Vite 配置中使用:

import { defineConfig } from 'vite';
import ViteStaticCopy from 'vite-plugin-static-copy';

export default defineConfig({
  plugins: [
    ViteStaticCopy({
      targets: [
        {
          src: 'src/assets/images/**/*',
          dest: 'assets/images',
        },
      ],
    }),
  ],
});

总结

  • 确保 Vite 配置了 @ 别名(指向 src 文件夹)。
  • 使用 import 动态引入图片,或者在模板中使用 require 处理路径。
  • 可以通过 build.assetsInlineLimit 配置控制图片的加载方式,选择是否内联或独立打包。

这种方式不需要额外配置 require,Vite 会自动处理静态资源的引入和路径解析。

更多推荐