Mac M1环境下React Native初始化Ruby版本不匹配问题求助
解决M1 Mac下React Native初始化时Ruby版本不匹配问题
核心问题分析
你遇到的问题本质是M1终端架构(arm64)与Rosetta 2终端架构(x86_64)的环境隔离,加上PATH顺序配置错误,导致React Native初始化脚本调用了系统默认的Ruby 2.6.10,而非你通过RVM安装的2.7.6版本。
分步解决方案
1. 修正PATH顺序,让RVM Ruby优先被调用
打开~/.zshrc文件,将原来追加PATH的两行改为前置(确保RVM路径优先级高于系统路径):
export PATH="$HOME/.rvm/gems/ruby-2.7.6/bin:$PATH" export PATH="$HOME/.rvm/bin:$PATH"
保存后执行以下命令让配置生效:
source ~/.zshrc
2. 全程使用Rosetta 2终端执行命令
你安装的Ruby是x86_64架构(通过Rosetta终端安装),arm64终端无法正确关联该环境。所有操作(包括npx react-native init)都要在Rosetta终端中执行:
- 找到终端应用,右键选择「显示简介」,勾选「使用Rosetta打开」,重启终端后再操作。
3. 重新关联CocoaPods到RVM Ruby
如果之前用系统Ruby安装过CocoaPods,需要卸载后用RVM的Ruby重新安装,确保pod命令绑定到正确的Ruby版本:
gem uninstall cocoapods gem install cocoapods
验证CocoaPods关联的Ruby版本:
pod env
确认输出中的Ruby版本为2.7.6即可。
4. 验证全局Ruby环境
关闭并重新打开Rosetta终端,执行以下命令确认环境配置正确:
ruby --version # 应返回ruby 2.7.6p219 [x86_64-darwin22] which ruby # 应返回/Users/你的用户名/.rvm/rubies/ruby-2.7.6/bin/ruby which gem # 应返回/Users/你的用户名/.rvm/rubies/ruby-2.7.6/bin/gem
问题根源补充
- M1 Mac的arm64终端和Rosetta的x86_64终端是两个独立的环境变量空间,你在Rosetta下安装的Ruby无法被arm终端直接识别。
- 最初的PATH配置是将RVM路径追加到末尾,系统默认的Ruby路径(/usr/bin/ruby)优先级更高,导致React Native脚本调用了系统Ruby。
- 若CocoaPods是用系统Ruby安装的,即使你切换了Ruby版本,pod命令仍会绑定到原Ruby环境,引发版本不匹配错误。
内容的提问来源于stack exchange,提问作者Madar
相关产品推荐
相关产品推荐

