运行bit tag时报TypeScript错误:对应类型不存在'ref'属性
这个问题是本地环境正常、CI环境报错,本质是Bit在CI环境加载的组件类型还是你添加forwardRef之前的旧版本,按以下顺序排查即可:
常见原因&修复方案
组件导出类型被覆盖
检查Tags组件的完整导出逻辑,不要手动给forwardRef返回的组件指定
React.FC<TagsProps>类型,该类型会自动忽略ref属性,直接导出React.forwardRef的返回值即可,你贴出的代码这部分写法是正确的,需确认无额外的类型断言。Bit缓存的旧类型未更新
Bit会自动缓存组件的类型定义,本地开发时你之前的修改已经触发了类型更新,但CI环境拉取的还是缓存的旧类型。可以在CI的
bit tag命令前增加强制重新编译的步骤:bit compile --rebuild bit tag --no-cache也可以在本地执行完上述命令后,将Bit生成的类型文件提交到代码仓库,避免CI重新生成时出错。
组件依赖版本未同步
Dropdown组件依赖的Tags组件版本如果被Bit锁定为添加forwardRef之前的旧版本,即使你改了Tags的代码,CI上Dropdown还是会加载旧版本的类型。本地执行以下命令更新依赖链即可:
bit deps --update dropdown tags # 替换为你实际的组件ID bit tag --all环境版本不一致
确认CircleCI环境安装的Bit版本、TypeScript版本和本地开发环境完全一致,在package.json的
devDependencies中固定两个工具的版本号,不要使用latest标签拉取最新版,避免版本差异导致的类型推断bug。类型定义过滤了ref
检查
TagsProps的定义,确认没有使用类似[key: string]: never的索引签名,也没有用Omit过滤内置属性,这类写法会把ref从合法属性中移除。
内容的提问来源于stack exchange,提问作者Itay Tur
相关产品推荐
相关产品推荐

