Nx Monorepo中RN从0.68.5升级到0.71.2后无法解析./index的问题
React Native 0.71.2升级后「Cannot resolve ./index」错误排查与解决(Nx Monorepo环境)
常见原因及解决方法
1. 入口文件路径或配置不匹配
RN 0.70+版本对入口文件的解析逻辑有调整,结合Nx Monorepo结构,可能存在路径配置偏差:
- 检查项目根目录是否存在
index.js/index.tsx入口文件,使用TypeScript时需确保后缀为.tsx - 修改
metro.config.js的resolver配置,补充主入口解析规则:module.exports = { resolver: { mainFields: ['react-native', 'browser', 'main'], entryFile: 'index.tsx' // 替换为你的实际入口文件名 } };
2. Nx项目配置未同步升级
Nx的React Native插件版本需与RN版本匹配,且项目配置文件可能未更新:
- 打开项目下的
project.json,检查targets->build->options->entryFile字段,确保路径指向正确的入口文件(如src/index.tsx或根目录的index.tsx) - 升级
@nx/react-native插件至与RN 0.71.2兼容的版本
3. 缓存残留导致解析异常
旧缓存会保留升级前的路径引用,需彻底清除:
- 清除Metro缓存:
npx react-native start --reset-cache - 清除Nx工作区缓存:
nx reset - 重装依赖:
rm -rf node_modules && npm install(或yarn install) - iOS端额外清除Pods缓存:
cd ios && pod deintegrate && pod install
4. 原生端入口配置遗漏
虽已修改AppDelegate,仍可能存在细节偏差:
- iOS端:检查
AppDelegate.mm中RCTBridge初始化逻辑,确保未指定错误的入口模块名,默认保持[[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]即可 - Android端:检查
MainActivity.kt中getMainComponentName()返回的组件名,需与入口文件中AppRegistry.registerComponent注册的名称完全一致
5. TypeScript配置冲突
TypeScript路径映射或包含规则可能导致入口文件无法被解析:
- 检查项目
tsconfig.json,确保include数组包含入口文件(如"include": ["src/**/*", "index.tsx"]) - 确认
compilerOptions->baseUrl和paths配置未覆盖入口文件的正常解析路径
内容的提问来源于stack exchange,提问作者İsmail
相关产品推荐
相关产品推荐

