使用 dumi 开发组件包,在组件中引用 svg 图片时 TS 报错,执行 pnpm build 命令无法正常打包,报错如下:
# pnpm build error - src/index.tsx:19:22 - TS2307: Cannot find module '../assets/img1.svg' or its corresponding type declarations. error - src/index.tsx:20:18 - TS2307: Cannot find module '../assets/img2.svg' or its corresponding type declarations. ...
原因分析:
TypeScript 类型缺失:未声明
.svg文件的模块类型,导致 TS 无法识别导入路径。路径引用错误:相对路径
../assets/...计算不准确,实际文件位置与代码中路径不匹配。构建配置未处理资源:若 father-build 未正确配置静态资源处理,可能导致文件未被复制到输出目录。
解决方案:
1. 添加 SVG 类型声明文件
在项目根目录或 src 目录下创建 typings.d.ts 文件(如已存在则直接修改),添加以下内容:
// typings.d.ts
declare module '*.svg' {
const content: string;
export default content;
}检查 TypeScript 配置,在项目根目录下的 tsconfig.json 文件中增加 "typings.d.ts" 引用:
{
"compilerOptions": {
"typeRoots": ["./typings.d.ts", "./node_modules/@types"]
},
//- "include": [".dumirc.ts", "src/**/*"]
"include": [".dumirc.ts", "src/**/*", "typings.d.ts"]
}2. 检查并修正 SVG 文件路径
验证代码中引用路径与文件实际位置是否一致。
假设项目结构如下:
src/ index.tsx assets/ img1.svg img2.svg
则正确引用路径应为:
// index.tsx import img1 from '../assets/img1.svg'; import img2 from '../assets/img2.svg';
3. 验证 SVG 文件位置
确保 img1.svg 和 img2.svg 实际存在于 src/assets 目录下。
若路径错误,调整代码引用路径或移动文件位置。
4. 清理缓存并重新构建
# 删除构建缓存 rm -rf dist node_modules/.cache
# 重新安装依赖并构建 yarn install yarn build
验证以上方法是否有效。
未经允许不得转载:前端资源网 - w3h5 » dumi封装组件中引用svg图片报错Cannot find module的解决办法
前端资源网 - w3h5