开发者最怕的不是报错,是报错信息看着像小事,结果把整个应用埋了。
这周我踩的坑就是这样。React Native项目,Expo环境,monorepo结构。手机端直接白屏,控制台甩出两行版本号:
![]()
react: 19.2.5
react-native-renderer: 19.1.0
差距只有0.1.5,按语义化版本规则本该兼容。但React Native的渲染器对版本对齐有硬性要求,小数点后第二位不匹配就直接拒绝渲染,连降级回退的余地都没有。
更麻烦的是monorepo的依赖提升机制。根目录和子包的lock文件互相覆盖,npm install时看似装对了,实际运行时解析到的是另一个版本的renderer。我试过手动锁定、resolutions字段、甚至pnpm的hoist模式,问题还在定位中。
这个case的吊诡之处在于:工具链越现代化,版本耦合越隐蔽。Expo封装了大部分原生配置,开发者离底层越远,遇到这种跨层版本冲突时越难诊断。报错信息只说"Incompatible React versions",却不告诉你哪个包引入了冲突版本。
目前还在挖根因。如果有人在Expo+monorepo场景下解决过类似问题,欢迎指个方向。搞定后更新方案。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.