Android端react-native-camera报错:无法读取RNCamera属性及ViewPropTypes问题
React Native Camera 安装后两类报错的解决方法
报错1:Invariant Violation: ViewPropTypes已从React Native移除,需迁移至'deprecated-react-native-prop-types'
解决步骤:
- 安装兼容依赖:
npm install deprecated-react-native-prop-types --save # 或使用yarn yarn add deprecated-react-native-prop-types - 修改react-native-camera源码的ViewPropTypes引用:
找到node_modules/react-native-camera中所有导入ViewPropTypes的文件,将
替换为import { ViewPropTypes } from 'react-native';import ViewPropTypes from 'deprecated-react-native-prop-types'; - (可选)用patch-package持久化修改:
避免每次重装依赖重复改源码,先安装patch-package:
修改完文件后执行:npm install patch-package --save-dev
后续安装依赖时补丁会自动生效。npx patch-package react-native-camera
报错2:TypeError: 无法读取undefined的'RNCamera'属性
解决步骤:
- 确认依赖链接状态:
RN 0.60+支持自动链接,但iOS需执行npx pod-install;Android可手动清理缓存后重新构建。 - 检查build.gradle配置位置:
确保missingDimensionStrategy在android/app/build.gradle的defaultConfig块内:defaultConfig { applicationId "com.yourapp" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0" // 确保该行在defaultConfig范围内 missingDimensionStrategy 'react-native-camera', 'general' } - 验证权限配置:
确认AndroidManifest.xml中已添加所需权限:<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> - 清理缓存并重启服务:
# 重置Metro缓存 npx react-native start --reset-cache # Android清理构建缓存 cd android && ./gradlew clean && cd .. # iOS重新安装Pods cd ios && pod deintegrate && pod install && cd .. - 重新运行项目:
# Android npx react-native run-android # iOS npx react-native run-ios
内容的提问来源于stack exchange,提问作者Amit giri
相关产品推荐
相关产品推荐

