React Native中RNPermissions模块未找到报错求助
React Native集成谷歌移动广告时RNPermissions TurboModule找不到的解决办法
问题描述
我是React Native新手,在集成谷歌移动广告过程中遇到报错:
Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'RNPermissions' could not be found. Verify that a module by this name is registered in the native binary.
导入代码:
import { check, request, PERMISSIONS, RESULTS } from 'react-native-permissions';
环境:Android模拟器运行,已执行npm start和npx expo run:android,所有依赖为最新版本,尝试多种方案未解决。
解决步骤
确认依赖安装状态
执行命令检查react-native-permissions是否已安装:npm list react-native-permissions若未安装,执行安装命令:
npm install react-native-permissionsExpo项目需确保使用兼容版本,避免依赖已废弃的
expo-permissions。配置Android权限(Expo项目)
在app.json或app.config.js中添加插件配置,按需声明所需权限:"expo": { "plugins": [ [ "react-native-permissions", { "androidPermissions": [ "android.permission.INTERNET", // 按需添加广告相关权限,如ACCESS_FINE_LOCATION等 ] } ] ] }清理缓存并重新构建
- 清除npm缓存:
npm cache clean --force - 清除Expo缓存:
npx expo start --clear - 删除Android构建目录(按需执行):
# Mac/Linux rm -rf android/app/build # Windows rmdir /s /q android\app\build - 重新构建项目:
npx expo run:android
- 清除npm缓存:
裸RN项目检查模块注册
若为裸React Native项目,需确保MainApplication.java中注册了RNPermissions模块:import com.reactnativecommunity.permissions.RNPermissionsPackage; @Override protected List<ReactPackage> getPackages() { List<ReactPackage> packages = new PackageList(this).getPackages(); packages.add(new RNPermissionsPackage()); return packages; }注册后重新编译项目。
验证版本兼容性
确认react-native-permissions与当前React Native、Expo版本兼容,可查看依赖的官方版本适配说明,避免因版本不匹配导致模块注册失败。
内容的提问来源于stack exchange,提问作者Danny Ellis Jr.
相关产品推荐
相关产品推荐

