安装依赖包并执行react-native link后,Expo构建JS包失败、模拟器卡0%求助
这种没有额外报错信息的构建失败确实让人摸不着头脑,我之前处理过类似的情况,给你几个逐步排查的方向,按顺序试下来大概率能找到问题:
先清缓存重启:Metro缓存堆积是这类问题的常见原因,直接在终端运行
expo r -c(如果是旧版exp-cli就用exp start -c),这个命令会彻底清除Metro的缓存并重新启动打包服务,很多时候卡0%的问题清完缓存就好了。排查刚安装的依赖:既然问题是在安装依赖并执行
react-native link后出现的,先把这个依赖卸载掉,再执行react-native unlink [依赖名](如果需要),然后重启项目看是否恢复正常。如果恢复了,说明是这个依赖和你的项目版本不兼容,要么找适配你RN/Expo版本的依赖版本,要么换功能类似的替代包。查看隐藏的错误日志:终端没显示详细错误,但模拟器的调试菜单里可能藏着线索。在iOS模拟器里按
Cmd + D调出调试菜单,选择「Debug Remote JS」,然后打开Chrome的开发者工具看Console面板,这里通常会显示真正的报错原因——比如某个模块找不到、语法错误或者依赖引入路径不对。检查依赖版本冲突:运行
npm ls或者yarn list查看项目的依赖树,看看有没有红标的冲突项,特别是刚装的依赖和现有RN/Expo版本是否匹配。比如有些依赖要求RN 0.65+,但你的项目还在0.63版本,就会导致构建失败。核对Metro配置:
react-native link可能不小心修改了metro.config.js的配置,检查文件里的resolver.sourceExts是否包含了项目用到的文件扩展名(比如js、jsx、ts、tsx、json等),如果用了svg或者其他自定义格式,也要确保加进去。检查Xcode项目配置:虽然问题出在JS打包,但link操作可能改动了Xcode的设置。打开你的Xcode项目,进入Build Phases,检查「Bundle React Native code and images」这个脚本是否正常,有没有路径错误或者权限问题。
内容的提问来源于stack exchange,提问作者Hugo

