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

使用Create React App+TypeScript时,已配置custom.d.ts仍找不到SVG模块

解决方案:CRA JS转TS后SVG组件类型定义无效问题
  • 检查custom.d.ts的位置与tsconfig覆盖范围
    你的custom.d.ts放在src目录下,但当前tsconfig的include虽然包含**/*.ts,若项目根目录下存在其他子目录的tsconfig.json,可能导致配置不生效。可以直接将custom.d.ts的路径明确加入include数组:

    "include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "src/custom.d.ts"]
    

    同时确认tsconfig里没有exclude规则排除该文件。

  • 调整SVG类型定义的写法
    改用CRA官方TS模板中的SVG类型定义格式,兼容性更好:

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

    注意这里使用SVGSVGElement而非SVGElement,并用React.FC简写,同时明确导入type React。

  • 排查类型定义冲突
    检查项目是否安装了@types/svg或其他SVG相关类型包,这类包可能覆盖自定义的*.svg模块定义。如果有,卸载后再测试:

    npm uninstall @types/svg --save-dev
    
  • 强制重启TypeScript语言服务
    仅重启编辑器可能不够,在VSCode中通过快捷键Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac)调出命令面板,输入Restart TypeScript Server并执行,确保新的类型定义被加载。

  • 验证引入方式的正确性
    尝试简化路径测试:将SVG文件临时移到src目录下,用import { ReactComponent as AddLineIcon } from './add-line.svg'测试是否生效,排除路径别名或嵌套目录的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 08:28:32