Expo导入react-native-track-player报错:Cannot read property 'RATING-HEART' of null
问题原因及修复方案
可能的原因
- 版本兼容性冲突:react-native-track-player v3及以上版本对Expo(尤其是Managed Workflow)支持有限,Managed Workflow不允许修改原生配置,而该库高版本需要原生层面的调整,导致导入时触发错误。
- 原生依赖未正确部署:即使是Bare Workflow,若安装过程中跳过了iOS的
pod install或Android的Gradle同步,会导致原生模块缺失,引发导入失败。 - 缓存残留干扰:Expo开发服务器的旧缓存未清除,新安装的模块未被正确识别加载。
修复步骤
针对Managed Workflow(未 eject 的Expo项目)
Managed Workflow无法直接使用react-native-track-player,建议替换为Expo官方支持的音频库:
- 安装
expo-av:npx expo install expo-av - 使用
expo-av的Audio API实现音频播放,完全适配Expo生态,无需原生配置。
针对Bare Workflow(已 eject 的Expo项目)
更换兼容版本
npm uninstall react-native-track-player npm install react-native-track-player@2.3.0(v2.3.0是经验证的、对Expo Bare Workflow兼容性较好的版本)
补全原生依赖配置
- Android:
确保android/build.gradle的repositories区块包含:
打开Android Studio执行File > Sync Project with Gradle Files同步配置。repositories { google() mavenCentral() jcenter() } - iOS:
进入项目ios目录执行:pod install
- Android:
清除缓存重启服务
expo start --clear正确初始化播放器
导入后必须先完成初始化再使用:import TrackPlayer from 'react-native-track-player'; const initPlayer = async () => { await TrackPlayer.setupPlayer(); // 后续添加曲目等操作 };
内容的提问来源于stack exchange,提问作者Nguyễn Nguyễn
相关产品推荐
相关产品推荐

