React Native Turbo Module执行pod install遇Ruby版本不匹配问题求助
解决React Native Turbo Module安装Pod时Ruby版本不匹配的问题
问题根源
你直接执行ruby -v看到的是当前shell环境的Ruby版本,但bundle exec会优先遵循项目的Ruby版本配置——要么是项目根目录的.ruby-version文件指定的版本,要么是版本管理器(rbenv/rvm)给项目设置的本地版本,所以才会出现“明明全局是2.6.8,bundle却找3.1.2”的矛盾情况。
修复步骤
检查项目本地版本配置
进入项目根目录,查看是否存在.ruby-version文件:cat .ruby-version如果文件里写的是
3.1.2,直接改成2.6.8保存即可;要是你想统一使用3.1.2版本,那得先确保本地已安装该版本。重置bundle关联
删除旧的bundle缓存,重新安装依赖:rm -rf .bundle/ bundle install --redownload完成后再尝试运行
RCT_NEW_ARCH_ENABLED=1 bundle exec pod install。检查版本管理器状态
如果你用了rbenv或者rvm,先确认项目的本地版本设置:- 针对rbenv:执行
rbenv local,若输出是3.1.2,执行以下命令切换:rbenv local 2.6.8 - 针对rvm:执行
rvm current,若版本不对,执行切换命令:rvm use 2.6.8
- 针对rbenv:执行
强制指定Ruby版本执行
要是上面的方法都无效,直接用当前Ruby的路径来执行bundle:RCT_NEW_ARCH_ENABLED=1 $(which ruby) $(which bundle) exec pod install这会强制使用你
ruby -v显示的那个版本的Ruby和对应的bundle。同步bundler版本
有时bundler版本不兼容也会引发问题,卸载旧的bundler,安装和Gemfile.lock一致的版本:gem uninstall bundler gem install bundler -v $(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)
内容的提问来源于stack exchange,提问作者Berry Blue
相关产品推荐
相关产品推荐

