升级React Native与Expo到指定版本后iOS端出现"No script URL provided"错误求助
升级React Native与Expo到指定版本后iOS端出现构建卡壳问题求助
问题背景
我最近在Bareflow架构的React Native项目里做了版本升级:把React Native从0.75.1升到0.81.5,同时把Expo从51升级到54。Android端构建很顺利,但iOS端遇到了一堆棘手问题:
- 一开始构建直接失败,报
*No such module expo*,错误源头是AppDelegate.swift的导入语句 - 按照社区建议把
_arm64_添加到排除架构后,之前的模块错误消失了,但现在构建直接卡壳在某个环节,完全推进不下去 - 我还试过降级React Native到0.79和0.78版本,结果还是卡在同一个地方;也试过彻底删除
node_modules、Pods文件夹,重新安装所有依赖,依然没有解决问题
环境信息
React Native 环境详情
npx react-native info System: OS: macOS 15.4.1 CPU: (8) x64 Apple M1 Memory: 42.91 MB / 16.00 GB Shell: version: "5.9" path: /bin/zsh Binaries: Node: version: 24.11.1 path: /usr/local/opt/node@24/bin/node Yarn: version: 1.22.18 path: /usr/local/bin/yarn npm: version: 11.6.2 path: /usr/local/opt/node@24/bin/npm Watchman: version: 2025.12.15.00 path: /usr/local/bin/watchman Managers: CocoaPods: version: 1.16.2 path: /usr/local/bin/pod SDKs: iOS SDK: Platforms: - DriverKit 24.2 - iOS 18.2 - macOS 15.2 - tvOS 18.2 - visionOS 2.2 - watchOS 11.2 Android SDK: Not Found IDEs: Android Studio: 2024.1 AI-241.18034.62.2412.12266719 Xcode: version: 16.2/16C5032a path: /usr/bin/xcodebuild Languages: Java: version: 17.0.14 path: /usr/bin/javac Ruby: version: 2.6.10 path: /usr/bin/ruby npmPackages: "@react-native-community/cli": installed: 20.0.0 wanted: 20.0.0 react: installed: 19.1.0 wanted: 19.1.0 react-native: installed: 0.81.5 wanted: 0.81.5 react-native-macos: Not Found npmGlobalPackages: "*react-native*": Not Found Android: hermesEnabled: true newArchEnabled: true iOS: hermesEnabled: true newArchEnabled: true
Expo 环境详情
expo-env-info 2.0.8 environment info: System: OS: macOS 15.4.1 Shell: 5.9 - /bin/zsh Binaries: Node: 24.11.1 - /usr/local/opt/node@24/bin/node Yarn: 1.22.18 - /usr/local/bin/yarn npm: 11.6.2 - /usr/local/opt/node@24/bin/npm Watchman: 2025.03.03.00 - /usr/local/bin/watchman Managers: CocoaPods: 1.16.2 - /usr/local/bin/pod SDKs: iOS SDK: Platforms: DriverKit 24.2, iOS 18.2, macOS 15.2, tvOS 18.2, visionOS 2.2, watchOS 11.2 IDEs: Android Studio: 2024.1 AI-241.18034.62.2412.12266719 Xcode: 16.2/16C5032a - /usr/bin/xcodebuild npmPackages: babel-preset-expo: ~54.0.0 => 54.0.8 expo: ~54.0.0 => 54.0.29 expo-updates: ^29.0.15 => 29.0.15 react: 19.1.0 => 19.1.0 react-dom: ^19.1.0 => 19.2.1 react-native: 0.81.5 => 0.81.5 Expo Workflow: bare
Expo Doctor 检测到的问题
我跑了expo doctor排查,结果有5项检查不通过,具体如下:
- package.json脚本冲突:package.json里的
jetify脚本和node_modules/.bin中的内容冲突,建议移除冲突的脚本 - 依赖重复问题:项目存在多版本重复的原生模块,可能引发构建异常:
react-native-device-info:同时存在15.0.1、10.3.0、8.7.1三个版本(后两个为子依赖引入)expo-constants:同时存在18.0.12和18.0.11两个版本(后者为expo-asset的子依赖)
- 原生配置同步问题:项目同时保留
android/、ios/原生文件夹和app.config.js配置文件,EAS Build将不会同步ios、android相关配置项 - 依赖兼容性问题:部分依赖存在新架构支持或维护状态隐患:
- 未适配新架构:
@nozbe/watermelondb、react-native-fs - 已停止维护:
react-native-fs、rn-fetch-blob - 无官方元数据:
@microsoft/react-native-clarity、ffmpeg-kit-react-native、sp-react-native-in-app-updates、@nozbe/simdjson
- 未适配新架构:
- 依赖版本不匹配:有10个包的版本与Expo SDK 54要求的基准版本不一致:
- 小版本差异:
react-dom、react-native-gesture-handler、react-native-reanimated等 - 补丁版本差异:
expo、expo-splash-screen、babel-preset-expo等
- 小版本差异:
已尝试的解决方案
- 给iOS项目的排除架构添加
_arm64_,解决了最初的No such module expo错误 - 降级React Native到0.79、0.78版本,尝试绕过当前版本的兼容性问题
- 完全删除
node_modules、ios/Pods、ios/Podfile.lock,重新执行yarn install和pod install - 清除Yarn缓存和CocoaPods缓存
求助需求
现在我有点摸不着头绪,想请教各位:
- 目前iOS构建卡壳的问题,有没有可能是这些Doctor检测到的问题导致的?应该优先处理哪几个?
- 针对子依赖带来的重复版本问题,有没有更高效的解决办法?
- 有没有其他排查方向,可以定位iOS构建卡壳的具体原因?




