React Native升级后iOS调试遇react-native-gesture-handler模块未找到错误求助
React Native 0.70.3升级后两个错误的解决步骤
一、解决react-native-gesture-handler模块未找到错误
- 卸载并重装适配RN 0.70的版本
npm uninstall react-native-gesture-handler npm install react-native-gesture-handler@^2.8.0 - 重新安装iOS依赖
cd ios && pod deintegrate && pod install && cd .. - 确保入口文件(App.js/index.js)最顶部导入手势处理初始化代码,并使用
GestureHandlerRootView包裹根组件
二、解决TouchableOpacity的"cannot read property handlesetjsresponder of null"错误
- 替换TouchableOpacity来源:改用
react-native-gesture-handler提供的组件,替代原生react-native的版本 - 清除所有缓存
同时在Xcode中清除DerivedData(菜单栏 -> Product -> Clean Build Folder),重启Xcode和Metro服务npm start -- --reset-cache - 检查代码中是否存在未正确初始化的组件ref,或组件卸载后仍触发 onPress 的情况
示例代码(修改后的App.js)
// 必须放在所有导入最顶部 import 'react-native-gesture-handler'; import React from 'react'; import { View, Text } from 'react-native'; import { TouchableOpacity, GestureHandlerRootView } from 'react-native-gesture-handler'; const App = () => { return ( <GestureHandlerRootView style={{ flex: 1 }}> <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <TouchableOpacity onPress={() => console.log('按钮被点击')} style={{ padding: 12, backgroundColor: '#2196F3', borderRadius: 4 }} > <Text style={{ color: '#fff' }}>点击测试</Text> </TouchableOpacity> </View> </GestureHandlerRootView> ); }; export default App;
额外排查点
- 检查package.json中依赖版本是否适配RN 0.70.3,示例依赖片段:
{ "dependencies": { "react": "18.1.0", "react-native": "0.70.3", "react-native-gesture-handler": "^2.8.0" } } - 确认其他依赖包(如react-navigation)已升级到适配RN 0.70的版本,避免依赖冲突
- 若自动链接失效,可手动在iOS项目的Podfile中添加
pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler',再执行pod install
内容的提问来源于stack exchange,提问作者Praveen Reddy Vangala
相关产品推荐
相关产品推荐

