umi项目升级至3.x后, route/import 组件路径必须加.tsx的处理

2,506 阅读1分钟

业务场景:

一项目从umi 2.x升级至3.x,3.x版本全面支持ts,为了在项目中逐步引入ts,同时又不影响旧的业务。新加入的功能页面使用tsx扩展名。在route.js中加入新路由后,报错显示找不到xxx.jsx组件

{
    name: 'users',
    path: '/sys/users',
    component: './sys/Users'   // 报错显示找不到..../sys/Users.jsx文件,但实际创建了sys/Users.tsx
},

将component的路径后面加上.tsx后,页面可正常加载。但又有下面的问题:

Users.tsx引入组件 import List from './components/List.tsx', ts报错:导入路径不能以“.tsx”扩展名结束。去掉.tsx的话,又会报找不到./components/List.jsx文件。这加也不是,不加也不是。想想可能还是整个ts的配置出了问题。

解决办法:

// tsconfig.json 加入以下配置
"include": [
    "./src/**/*"   // 读取所有可识别的src目录下的文件(通过include)。
],
  • 同时,去掉route.js.tsx扩展名,以及Users.tsx引入组件改为 import List from './components/List'
  • 重新启动服务yarn start,再预览页面时,就不再报任何错误了,编辑器中ts也不再报错。

什么是jsconfig.json?

目录中存在jsconfig.json,表示该目录是js项目的根目录。jsconfig.json文件可以指定根文件js语言服务提供的特性选项

jsconfig.json源于tsconfig.json,是TypeScript的配置文件。配置了tsconfig.json的情况下,设置了allowJs:true, jsconfig.json 才生效。 所以tsconfig.jsonjsconfig.json同时存在的情况下,tsconfig.json 配置高于 jsconfig.json。

参考

jsconfig.json: code.visualstudio.com/docs/langua…

vscode中的 jsconfig.json: segmentfault.com/a/119000001…

vscode jsconfig.json 使用说明 blog.csdn.net/zengzeng011…