NX Monorepo中Expo React Native集成expo-camera编译失败求助
解决NX Monorepo中Expo ejected项目集成expo-camera的Kotlin编译错误
问题分析
你遇到的Task :expo-camera:compileDebugKotlin FAILED错误,核心是依赖版本不兼容和Monorepo下Maven仓库路径配置错误,具体表现为:
- Kotlin代码中找不到
raw引用 BarCodeScannerResult构造函数参数不匹配,说明expo-modules-interfaces版本与expo-camera不兼容
解决方案
1. 修正Android Maven仓库路径
NX Monorepo目录结构与普通Expo项目不同,原路径指向错误,需根据项目结构调整:
打开android/build.gradle,修改maven仓库配置:
maven { // 适配NX Monorepo结构,确保定位到expo-camera的maven仓库 url "$rootDir/../../node_modules/expo-camera/android/maven" }
提示:若Android项目在
apps/your-app/android目录,../../会回到monorepo根目录下的node_modules,可根据实际层级调整路径。
2. 锁定兼容的依赖版本
Expo 50对应的expo-modules-interfaces版本需严格匹配,在package.json中添加版本锁定:
- 使用npm时,添加
overrides字段:
"overrides": { "expo-modules-interfaces": "~1.10.0" }
- 使用yarn时,添加
resolutions字段:
"resolutions": { "expo-modules-interfaces": "~1.10.0" }
3. 清理缓存并重新安装依赖
执行以下步骤彻底清理缓存:
- 删除项目根目录的
node_modules文件夹 - 删除
package-lock.json或yarn.lock文件 - 清理Android Gradle缓存:
cd android && ./gradlew cleanBuildCache
- 重新安装依赖:
npm install # 或 yarn install
4. 重新构建Android项目
执行构建命令验证修复效果:
cd android && ./gradlew assembleDebug
内容的提问来源于stack exchange,提问作者SVG
相关产品推荐
相关产品推荐

