React Native 0.71键盘弹出时报错:Cannot add new property '_currentlyShowing'
React Native 0.71.4 点击输入框弹出键盘时报错:TypeError: Cannot add new property '_currentlyShowing'
运行React Native 0.71.4版本应用,构建过程无异常,但点击任意文本输入框弹出键盘时触发以下错误:
ERROR TypeError: Cannot add new property '_currentlyShowing', js engine: hermes
环境信息
System: OS: macOS 13.2.1 CPU: (8) arm64 Apple M1 Pro Memory: 764.00 MB / 32.00 GB Shell: 5.8.1 - /bin/zsh Binaries: Node: 18.14.2 - ~/.nvm/versions/node/v18.14.2/bin/node Yarn: 3.5.0 - /usr/local/bin/yarn npm: 9.5.0 - ~/.nvm/versions/node/v18.14.2/bin/npm Watchman: 2023.03.06.00 - /opt/homebrew/bin/watchman Managers: CocoaPods: 1.12.0 - /usr/local/bin/pod SDKs: iOS SDK: Platforms: DriverKit 22.2, iOS 16.2, macOS 13.1, tvOS 16.1, watchOS 9.1 Android SDK: API Levels: 28, 29, 31, 32, 33, 33 Build Tools: 30.0.2, 30.0.3, 31.0.0, 33.0.0, 33.0.2, 34.0.0 System Images: android-30 | Google APIs ARM 64 v8a Android NDK: Not Found IDEs: Android Studio: 2022.1 AI-221.6008.13.2211.9619390 Xcode: 14.2/14C18 - /usr/bin/xcodebuild Languages: Java: 11.0.18 - /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/bin/javac npmPackages: @react-native-community/cli: Not Found react: 18.2.0 => 18.2.0 react-native: 0.71.4 => 0.71.4 react-native-macos: Not Found npmGlobalPackages: *react-native*: Not Found
已尝试操作:删除node_modules、清理yarn缓存、执行gradlew clean和pod install、卸载模拟器应用,问题仍未解决。
可行的排查与解决方法
1. 排查第三方键盘相关依赖
该错误大概率与键盘管理类第三方库冲突,比如react-native-keyboard-aware-scroll-view、react-native-keyboard-manager等:
- 临时移除项目中的这类依赖,重新构建后测试是否仍报错。
- 若确认是某库导致,查看其版本是否适配RN 0.71.x,升级至最新兼容版本。
2. 临时禁用Hermes引擎测试
错误关联Hermes引擎,可先禁用排查兼容性问题:
- iOS:在
ios/Podfile中修改use_react_native!配置,移除:hermes_enabled => true,执行pod install后重新构建。 - Android:在
android/app/build.gradle中设置enableHermes: false,重新构建项目。
若禁用后错误消失,说明是Hermes与某个依赖存在兼容性问题,需针对性排查依赖版本。
3. 检查全局代码对核心对象的修改
项目中若有全局Polyfill、Object原型修改或Object.freeze冻结核心对象的代码,可能导致无法添加属性:
- 排查
polyfill文件、全局初始化代码,确认是否有对Keyboard相关对象进行冻结或修改的逻辑,临时注释后测试。
4. 升级RN到0.71.x最新补丁版本
RN 0.71.4后续发布了多个补丁版本(如0.71.13),可能已修复这类键盘相关Bug:
yarn upgrade react-native@0.71.x
升级后重新执行依赖安装与构建操作。
5. 检查iOS端第三方键盘管理配置
若仅iOS平台出现问题,检查AppDelegate中是否配置了IQKeyboardManager等第三方工具,临时注释相关配置代码后测试。
内容的提问来源于stack exchange,提问作者Miguel
相关产品推荐
相关产品推荐

