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

vite-plugin-svgr在Vite+React+TypeScript环境中失效问题求助

解决vite-plugin-svgr无法导出ReactComponent的问题

以下是几个能快速定位并解决问题的方案,按优先级尝试:

1. 修改导入语句的后缀标识

Vite默认会把SVG当作静态资源处理,需要明确告知插件要将其转为React组件。把导入语句改成:

import { ReactComponent as MainTitle } from "../assets/search.svg?svgr";

添加?svgr后缀,强制触发vite-plugin-svgr的转换逻辑。

2. 调整插件配置项

在vite.config.ts中给svgr插件添加更明确的配置,确保它能正确识别并转换你的SVG文件:

import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import svgr from "vite-plugin-svgr";

export default defineConfig({
  plugins: [
    react(),
    svgr({
      include: "**/*.svg", // 匹配所有SVG文件
      svgrOptions: {
        // 可选:添加SVGR的转换配置,比如去掉SVG的width/height属性等
      }
    })
  ]
});

3. 确认TypeScript类型定义正确

如果你的svg.d.ts文件存在,检查内容是否正确,若不存在则新建该文件放在src目录下:

declare module "*.svg" {
  import React from "react";
  export const ReactComponent: React.FC<React.SVGProps<SVGSVGElement>>;
  const src: string;
  export default src;
}

同时确保tsconfig.json的include数组包含这个文件,就像你当前配置的那样。

4. 清理缓存并重启服务

Vite的缓存可能导致配置修改后不生效,执行以下操作:

  • 停止当前开发服务
  • 删除项目根目录下的node_modules/.vite文件夹
  • 重新运行npm run dev(或者加--force参数:npm run dev -- --force)

5. 检查版本兼容性

当前使用的vite-plugin-svgr@4.1.0和vite@4.4.11理论上兼容,但如果以上方法都无效,可以尝试调整插件版本:

  • 降级到vite-plugin-svgr@3.2.0:npm install vite-plugin-svgr@3.2.0 --save-dev
  • 或者升级到最新稳定版:npm install vite-plugin-svgr@latest --save-dev

内容的提问来源于stack exchange,提问作者김정수

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:42:55