React 报错之 Property ‘exact‘ does not exist on type ‘IntrinsicAttributes & IntrinsicClassAttributes<Ro

今天接手一个老react项目:react16 + react-router v4,项目拉下来安装依赖时,出现一系列错误:

  •  Error: certificate has expired     at TLSSocket.onConnectSecure (node:_tls_wrap:1659:34)     at TLSSocket.emit (node:events:517:28)     at TLSSocket._finishInit (node:_tls_wrap:1070:8)     at ssl.onhandshakedone (node:_tls_wrap:856:12)

        查阅资料得知:这个错误提示表明在尝试通过HTTPS连接到一个服务器时,该服务器的SSL/TLS证书已经过期。这通常发生在从npm或yarn仓库安装依赖时,特别是当这些仓库的证书不再有效时。

        解决办法:npm config set strict-ssl=false  // 禁用SSL检查

  • Error: getaddrinfo ENOTFOUND npm.thunisoft.com npm.thunisoft.com:80 at ······

        该问题表示 `npm.thunisoft.com` 该域名无法解析

        解决办法:将该url直接扔到浏览器,发现多台设备均无法访问,后问得知不需要此文件

在之前基础上,选择删除yarn.lock文件,使用yarn install 安装依赖,运行项目发现第三个问题:

  • Property 'exact' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Route<{}, string>> & Readonly<RouteProps<string, any> & OmitNative<{}, "path" | "render" | "children" | "location" | "component">> & Readonly<...>'.

        根据报错结合代码,获知在app.tsx中的exact属性出了问题,首先想到的是该属性的用法,查阅资料,在react-router v4 / v5 版本中是可以使用该属性的,作用为 ‘完全匹配’ ,在v6中不支持该属性,默认需要完全匹配,于是去检查依赖版本,发现版本为4.4.0 beta -6没问题,经过多方面查询资料猜测,可能是@types/react-router-dom 版本不对应,尝试修改版本,无效果,后来又尝试使用v6版本的书写,但是需要修改的地方较多,比如Switch,Redirect,<Route path="/" element={ } /> 甚至一些render的写法都需要改变,对于一个不会react的我来说无疑是个难点

        解决办法:回过头来想yarn.lock文件,重置项目,将锁文件中只是 ‘thunisoft’ 的这一个修改,不删除文件,再次安装依赖,成功运行,再去看两种方式生成的lock文件,发现删除文件后安装依赖自动生成的lock中,多数依赖的小版本都不相同

总结:lock文件对于项目还是十分重要的,特别是一些老项目。细微的小版本差异就会导致意想不到的错误

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值