react-native搭建开发环境过程记录

news2025/4/21 2:59:38

主要参考:官网的教程 https://reactnative.cn/docs/environment-setup

环境介绍:macos + ios

  1. npm - 已装
  2. node18 - 已装,通过nvm进行版本控制
  3. Homebrew- 已装
  4. yarn - 已装
  5. ruby - macos系统自带的2.2版本。
  6. watchman - 正常安装
  7. Xcode - 正常安装和配置。(无法通过配置的脚本正常启动,遂手动拖到命令行或者在cursor中的命令行工具 来启动本地项目)
  8. cocoapods - 安装失败(原因:ruby版本太低。)
  9. 创建新项目。可以启动simulator 但是无法启动项目。原因:cocoapods安装失败。

遇到的几个难解决的大问题:

1. yarn ios 会报错: ?unexpected token

CLI: unexpected token ‘?’

参考:github的回答
原因:node版本过低。且ruby无法识别在当前文件夹通过nvm切换的高版本。
解决方案:

  • 方法1 nvm 设置18 版本为default (陈工)
  • 方法2 ios文件下.xcode.env + 同时还有配置一下nvm的path路径 (没成功)

2. cocoapods - 安装失败

接下来是如何安装cocoapods
参靠这个
注意:: 前8个步骤都是正常。
到第九步(最后一步了)
在这里插入图片描述
会一直报错:如下

ERROR:  While executing gem ... (Gem::Exception)
    OpenSSL is not available. Install OpenSSL and rebuild Ruby or use non-HTTPS

明明OpenSSL已经安装了。但是却提示不可获得。
原因分析:OpenSSL配置的环境变量不对。
经过在.zshrc等文件里OpenSSL配置仍旧不解决问题。

最后通过下文中的步骤4解决了。方法3没尝试不知道能不能解决。

问题核心在于 Ruby 未正确链接到 OpenSSL 库,且使用 sudo 时环境变量可能被重置。以下是分步解决方案:


1. 确认 OpenSSL 安装及路径

# 检查 Homebrew 安装的 OpenSSL 路径(确保已安装)
brew install openssl@3       # 若尚未安装
OPENSSL_PATH=$(brew --prefix openssl@3)
echo $OPENSSL_PATH           # 输出应为类似 /opt/homebrew/opt/openssl@3(Apple Silicon)或 /usr/local/opt/openssl@3(Intel)

2. 重新安装 Ruby 并链接 OpenSSL

使用 RVM 重新安装 Ruby:
# 卸载当前 Ruby 版本(可选)
rvm remove 3.3.6

# 安装时指定 OpenSSL 路径(替换为你的实际路径)
rvm install 3.3.6 --with-openssl-dir=$OPENSSL_PATH

# 设为默认
rvm use 3.3.6 --default
验证 Ruby 的 OpenSSL 链接:
ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
# 输出应为你安装的 OpenSSL 版本(如 OpenSSL 3.0.12)

3. 禁止使用 sudo 安装 Gem

RVM 管理的 Ruby 应在用户空间运行,使用 sudo 会导致环境变量失效。直接以当前用户安装:

# 清理旧安装(如果存在)
gem uninstall cocoapods

# 安装 CocoaPods(无需 sudo)
gem install cocoapods

4. 若必须使用 sudo(不推荐)

如果因权限问题必须使用 sudo,需手动传递 OpenSSL 环境变量:

# 临时设置环境变量
export PATH="$OPENSSL_PATH/bin:$PATH"
export LDFLAGS="-L$OPENSSL_PATH/lib"
export CPPFLAGS="-I$OPENSSL_PATH/include"

# 使用 sudo 安装并保留环境变量。 -E 含义:保留当前用户的环境变量。
sudo -E gem install cocoapods -n /usr/local/bin

5. 修复 PATH 冲突

确保 RVM 的路径在 PATH 中优先级最高:

# 编辑 shell 配置文件(Zsh/Bash)
nano ~/.zshrc   # 或 nano ~/.bash_profile

# 添加以下行到文件末尾
export PATH="$HOME/.rvm/bin:$PATH"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

# 重新加载配置
source ~/.zshrc  # 或 source ~/.bash_profile

6. 验证安装

# 检查 CocoaPods 路径
which pod       # 应输出 ~/.rvm/gems/ruby-3.3.6/bin/pod

# 检查 OpenSSL 链接是否正常
gem install openssl -v '2.2.1' --source 'https://rubygems.org/'  # 测试 OpenSSL 是否可用

完整流程示例(Apple Silicon Mac)

# 1. 安装 OpenSSL
brew install openssl@3
export OPENSSL_PATH=$(brew --prefix openssl@3)

# 2. 重新安装 Ruby
rvm reinstall 3.3.6 --with-openssl-dir=$OPENSSL_PATH
rvm use 3.3.6 --default

# 3. 修复 PATH
echo 'export PATH="$HOME/.rvm/bin:$PATH"' >> ~/.zshrc
echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.zshrc
source ~/.zshrc

# 4. 安装 CocoaPods
gem install cocoapods
  1. [] 1个 和 2个的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2338338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

观察者模式详解与C++实现

1. 模式定义 观察者模式(Observer Pattern)是一种行为型设计模式,定义了对象间的一对多依赖关系。当一个对象(被观察者/主题)状态改变时,所有依赖它的对象(观察者)都会自动收到通知…

UE5 关卡序列

文章目录 介绍创建一个关卡序列编辑动画添加一个物体编辑动画时间轴显示秒而不是帧时间轴跳转到一个确定的时间时间轴的显示范围更改关键帧的动画插值方式操作多个关键帧 播放动画 介绍 类似于Unity的Animation动画,可以用来录制场景中物体的动画 创建一个关卡序列…

AI测试用例生成平台

AI测试用例生成平台 项目背景技术栈业务描述项目展示项目重难点 项目背景 针对传统接口测试用例设计高度依赖人工经验、重复工作量大、覆盖场景有限等行业痛点,基于大语言模型技术实现接口测试用例智能生成系统。 技术栈 LangChain框架GLM-4模型Prompt Engineeri…

C#中扩展方法和钩子机制使用

1.扩展方法: 扩展方法允许向现有类型 “添加” 方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像实例方法一样进行调用。 使用场景: 1.当无法修改某个类的源代码&#…

YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12的网络结构图

文章目录 一、YOLOv5二、YOLOv6三、YOLOv7四、YOLOv8五、YOLOv9六、YOLOv10七、YOLOv11八、YOLOv12九、目标检测系列文章 本文将给出YOLO各版本(YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12)网络结构图的绘制方法及图。本文所展…

03 UV

04 Display工具栏_哔哩哔哩_bilibili 讲的很棒 ctrlMMB 移动点 s 打针 ss 批量打针

AIGC-几款本地生活服务智能体完整指令直接用(DeepSeek,豆包,千问,Kimi,GPT)

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列AIGC(GPT、DeepSeek、豆包、千问、Kimi)👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资…

C#/.NET/.NET Core拾遗补漏合集(25年4月更新)

前言 在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。 ✍C#/.NET/.N…

MySQL性能调优(三):MySQL中的系统库(简介、performance_schema)

文章目录 MySQL性能调优数据库设计优化查询优化配置参数调整硬件优化 1.MySQL中的系统库1.1.系统库简介1.2.performance_schema1.2.1.什么是performance_schema1.2.2.performance_schema使用1.2.3.检查当前数据库版本是否支持1.2.4.performance_schema表的分类1.2.5.performanc…

印度zj游戏出海代投本土网盟广告核心优势

印度游戏出海代投本土网盟广告的核心优势包括: 本土化广告策略:针对印度市场的特点,定制本土化的广告策略,吸引更多印度用户的关注和参与。 深度了解印度市场:对印度文化、消费习惯、网络使用习惯等有深入了解&#x…

NO.97十六届蓝桥杯备战|数论板块-最大公约数和最小公倍数|欧几里得算法|秦九韶算法|小红的gcd(C++)

约数和倍数 如果a 除以b 没有余数,那么a 就是b 的倍数,b 就是a 的约数,记作b ∣ a 。 约数,也称因数。 最⼤公约数和最⼩公倍数 最⼤公约数Greatest Common Divisor,常缩写为gcd。 ⼀组整数的公约数,是…

《软件设计师》复习笔记(11.6)——系统转换、系统维护、系统评价

目录 一、遗留系统(Legacy System) 定义: 特点: 演化策略(基于价值与技术评估): 高水平 - 低价值: 高水平 - 高价值: 低水平 - 低价值: 低水平 - 高价…

人像面部关键点检测

此工作为本人近期做人脸情绪识别,CBAM模块前是否能加人脸关键点检测而做的尝试。由于创新点不是在于检测点的标注,而是CBAM的改进,因此,只是借用了现成库Dilb与cv2进行。 首先,下载人脸关键点预测模型:Index of /file…

EDID结构

EDID DDC通讯中传输显示设备数据 VGA , DVI 的EDID由128字节组成,hdmi的EDID增加扩展块128字节。扩展快的内容主要是和音频属性相关的,DVI和vga没有音频,hdmi自带音频,扩展快数据规范按照cea-861x标准。 Edid为了让pc或其他的图像…

文件包含(详解)

文件包含漏洞是一种常见的Web安全漏洞,其核心在于应用程序未对用户控制的文件路径或文件名进行严格过滤,导致攻击者能够包含并执行任意文件(包括本地或远程恶意文件)。 1. 文件包含原理 动态文件包含机制 开发者使用动态包含函数…

《SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战》​

🌟 ​大家好,我是摘星!​ 🌟 今天为大家带来的是Scheduled和Quartz对比分析: 新手常见困惑: 刚学SpringBoot时,我发现用Scheduled写定时任务特别简单。但当我看到同事在项目里用Quartz时&…

安装fvm可以让电脑同时管理多个版本的flutter、flutter常用命令、vscode连接模拟器

打开 PowerShellfvm安装 dart pub global activate fvm安装完成后,如果显示FVM无法识别,那么需要去添加环境变量path添加这个:C:\Users\Administrator\AppData\Local\Pub\Cache\bin 常用命令 fvm releases 查看用户可以装的flutter版本fvm l…

Kafka系列之:计算kafka集群topic占的存储大小

Kafka系列之:计算kafka集群topic占的存储大小 topic存储数据格式统计topic存储大小定时统计topic存储大小topic存储数据格式 单位是字节大小 size_bytes{directory="/data/datum/kafka/optics-all" } 782336计算topic存储大小脚本逻辑是: 计算指定目录或文件的大小…

智谱AI大模型免费开放:开启AI创作新时代

文章摘要:近日,国内领先的人工智能公司智谱AI宣布旗下多款大模型服务免费开放,这一举措标志着大模型技术正式迈入普惠阶段。本文将详细介绍智谱AI此次开放的GLM-4 等大模型,涵盖其主要功能、技术特点、使用步骤以及应用场景&#…

T1结构像+RS-fMRI影像处理过程记录(数据下载+Matlab工具箱+数据处理)

最近需要仿真研究T1结构像RS-fMRI影像融合处理输出目标坐标的路线可行性。就此机会记录下来。 为了完成验证目标处理,首先需要有数据,然后需要准备对应的处理平台和工具箱,进行一系列。那么开始记录~ 前言: 为了基于种子点的功能连…