业务场景:
一项目从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.json和jsconfig.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…