升级Expo后使用react-native-star-rating遇TypeError问题求助
解决Expo升级后react-native-star-rating组件报错问题
问题原因
react-native-star-rating是较旧的库,Expo升级后对应的React Native版本(0.68+)移除了Text.propTypes.allowFontScaling,且propTypes已从react-native核心包迁移到单独的prop-types包,导致组件读取未定义的属性报错,进而引发AppRegistry未注册的连锁问题。
用patch-package打补丁步骤
安装patch-package工具
用npm或yarn安装开发依赖:npm install patch-package --save-dev # 或者yarn yarn add patch-package postinstall-postinstall --dev修改组件源码
找到项目中node_modules/react-native-star-rating/src/StarRating.js文件,做两处修改:- 在文件顶部导入
prop-types包:import PropTypes from 'prop-types'; - 找到组件
propTypes定义里的allowFontScaling行,把Text.propTypes.allowFontScaling替换为PropTypes.bool:// 原代码 allowFontScaling: Text.propTypes.allowFontScaling, // 修改后 allowFontScaling: PropTypes.bool,
保存修改后的文件。
- 在文件顶部导入
生成补丁文件
在项目根目录运行命令生成补丁:npx patch-package react-native-star-rating执行后会在项目根目录生成
patches/react-native-star-rating+[你的组件版本号].patch文件,这个文件要提交到版本控制系统。配置自动应用补丁
打开package.json,在scripts字段里添加postinstall脚本:"scripts": { // 其他脚本... "postinstall": "patch-package" }这样后续执行
npm install或yarn install时,补丁会自动应用到node_modules里的组件。
完成以上步骤后,重启Metro服务(npx expo start --clear),报错即可解决。
内容的提问来源于stack exchange,提问作者Paulo Avila
相关产品推荐
相关产品推荐

