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

使用ReactComponent导入SVG报错“Element type is invalid”求助

问题解决:SVG组件导入报错Element type invalid

错误原因

你用{ ReactComponent as MyIcon }这种命名导入的方式不对——@svgr/webpack默认是把React组件作为默认导出,不是命名导出的ReactComponent。你解构这个不存在的命名导出,自然拿到的是undefined,渲染时就会抛出那个错误。

两种修复方案

方案1:修改导入语句(最简单)

直接导入默认导出,重命名为你要的组件名:

import MyIcon from "../../assets/icons/12x12/arrow-down-12.svg"

之后正常使用<MyIcon />即可。

方案2:调整Webpack配置,支持命名导出

如果你习惯用ReactComponent的命名导入写法,可以修改@svgr的配置,让它输出命名导出:

module.exports = {
    module: {
      rules: [
        {
          test: /\.svg$/i,
          issuer: /\.[jt]sx?$/,
          use: [
            {
              loader: '@svgr/webpack',
              options: {
                exportType: 'named', // 开启命名导出
              },
            },
          ],
        },
      ],
    },
  }

配置改完后重启Webpack服务,之后就能用你原来的导入语句正常工作了。

额外检查点

  • 确认SVG文件路径拼写正确,文件确实存在于指定位置
  • 如果用了Create React App之类的脚手架,注意不要和内置的SVG处理规则冲突(不过你自定义了Webpack配置,应该没问题)

内容的提问来源于stack exchange,提问作者happy_story

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:35:17