Expo React Native连接iOS实体设备时出现EIO I/O错误求解
解决Expo Metro打包器启动时的EIO读取错误问题
我之前也碰到过一模一样的错误,这种EIO: i/o error基本和文件系统读取异常、缓存损坏或者依赖包出问题有关,试试下面这些方法,按顺序来,大概率能搞定:
1. 先清掉Metro和Expo的缓存
缓存损坏是这类问题的重灾区,先彻底清一遍:
- 直接用Expo的清理命令启动:
npx expo start --clear - 如果这招没用,手动删缓存文件夹:
- 删掉项目根目录下的
.expo文件夹 - 删掉
node_modules/.cache这个缓存目录(有的话就删)
- 删掉项目根目录下的
2. 重装一遍依赖包
有时候node_modules里的包会莫名损坏或者版本不兼容:
- 先删掉
node_modules文件夹,还有yarn.lock文件 - 然后重新装依赖:
yarn install
3. 检查文件权限
错误里提到fs.js读取失败,可能是你没权限读某些文件:
- 看看你的项目文件夹是不是设成只读了,Windows的话右键文件夹→属性,取消只读勾选,还要应用到所有子文件
- 或者直接用管理员权限打开终端,再跑
yarn start试试
4. 暂时禁用自定义的jest/haste配置
如果你的项目里改了jest或者metro的自定义配置,可能和jest-haste-map冲突了:
- 先把
jest.config.js或者metro.config.js里的haste相关配置注释掉,再重启Metro - 也可以检查下jest版本和你的Expo版本是不是兼容,别装太新或者太旧的jest
5. 重启大法好
有时候系统层面的I/O小bug重启就能解决:
- 重启你的开发电脑
- 把iOS设备也重启一下,再打开Expo Go重新连接
要是上面的方法都不管用,试试把Expo CLI更到最新版本:
yarn global add expo-cli
内容的提问来源于stack exchange,提问作者emekaokoli
相关产品推荐
相关产品推荐

