React Router从V3升级至V6时出现Cannot find 'LeftSegment'与Cannot find 'infer'错误的技术求助
解决React Router v6升级时的TypeScript类型错误
你遇到的问题核心是版本不匹配:已经装上了React Router v6的核心库,但还在沿用v5版本的类型定义包,再加上你的TypeScript版本(v3.8)不足以支持React Router v6类型定义里的语法特性,才会出现这两个错误。
下面是具体的解决步骤:
卸载旧的v5类型定义包
React Router v6本身已经内置了完整的TypeScript类型定义,不需要再安装第三方的@types/react-router和@types/react-router-dom包。执行命令移除它们:npm uninstall @types/react-router @types/react-router-dom # 用yarn的话执行这个 yarn remove @types/react-router @types/react-router-dom升级TypeScript版本
React Router v6的类型定义用到了TypeScript 4.1及以上版本才支持的语法特性(比如进阶的泛型推导、infer的扩展用法等),v3.8版本太老旧了。建议直接升级到最新稳定版:npm install typescript@latest --save-dev # yarn用户执行这个 yarn add typescript@latest --dev统一React Router库版本(可选但推荐)
你当前的react-router是v6.2,react-router-dom是v6.2.1,虽然小版本差异不大,但为了避免潜在的兼容性问题,最好统一两者的版本:npm install react-router@6.2.1 react-router-dom@6.2.1 --save # yarn用户执行这个 yarn add react-router@6.2.1 react-router-dom@6.2.1
完成这些步骤后,建议清理项目依赖缓存(删除node_modules和package-lock.json/yarn.lock),重新安装依赖,再编译项目,这两个类型错误应该就能解决了。
内容的提问来源于stack exchange,提问作者Dhinesh
相关产品推荐
相关产品推荐

