You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bare React Native CLI集成Expo模块后npx react-native run-ios执行失败

解决Bare React Native CLI集成Expo生物识别后npx react-native run-ios端口报错问题

问题核心

在Bare RN CLI项目中集成Expo生物识别模块后,Android端运行正常,Xcode直接启动、归档操作也没问题,但执行npx react-native run-ios时,模拟器和真机均报错Error: GetEnv.NoInteger: is not an integer,本质是脚本读取RCT_METRO_PORT环境变量时无法识别为整数,导致PhaseScriptExecution失败——这是Expo配置与RN CLI默认端口传递逻辑冲突,导致端口参数格式异常引发的。

可行解决方案

1. 手动指定Metro端口启动

直接在启动命令中明确整数端口,绕开环境变量读取问题:

npx react-native run-ios --port 8081

或者分两步操作,先启动Metro再运行iOS项目:

# 先启动Metro并指定端口
npx react-native start --port 8081
# 新开终端窗口运行iOS项目
npx react-native run-ios

2. 修改iOS构建脚本的端口逻辑

  • 打开iOS项目的Info.plist,确认NSAllowsArbitraryLoads设置为YES(避免Expo配置干扰端口传递)
  • 打开Xcode,进入项目Build Phases,找到Bundle React Native code and images脚本,修改端口读取代码:
    把原脚本中类似export RCT_METRO_PORT="${RCT_METRO_PORT:=8081}"的行,替换为直接指定整数端口:
    export RCT_METRO_PORT=8081
    
    或者添加强转逻辑确保端口为整数:
    RCT_METRO_PORT=${RCT_METRO_PORT:-8081}
    export RCT_METRO_PORT=$(printf "%d" "$RCT_METRO_PORT")
    

3. 用环境变量固定端口

在项目根目录新建/编辑.env文件,添加固定端口配置:

RCT_METRO_PORT=8081

或者直接修改package.json的启动脚本:

{
  "scripts": {
    "ios": "RCT_METRO_PORT=8081 npx react-native run-ios"
  }
}

之后执行npm run ios即可启动项目。

4. 清理缓存重置环境

清理可能存在的缓存冲突:

# 重置Metro缓存
npx react-native start --reset-cache
# 清理iOS Pod依赖并重新安装
cd ios && pod deintegrate && pod install && cd ..
# 清理Xcode构建缓存
xcodebuild clean -workspace YourProject.xcworkspace -scheme YourProject

内容的提问来源于stack exchange,提问作者Midhun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:52:22