使用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
相关产品推荐
相关产品推荐

