USB连接手机运行React Native安卓项目时遇EIO错误求助
问题详情
未修改任何初始代码,通过USB连接手机运行基础React Native安卓应用时,终端抛出以下读取错误:
Failed to construct transformer: Error: EIO: i/o error, read
at Object.readSync (node:fs:749:3)
at tryReadSync (node:fs:449:20)
at Object.readFileSync (node:fs:487:19)
at getContent (D:\MyCodes\react-native\AwesomeProject\node_modules\metro-file-map\src\worker.js:66:22)
at Object.worker (D:\MyCodes\react-native\AwesomeProject\node_modules\metro-file-map\src\worker.js:110:20)
at execFunction (D:\MyCodes\react-native\AwesomeProject\node_modules\metro-file-map\node_modules\jest-worker\build\workers\processChild.js:137:17)
at execHelper (D:\MyCodes\react-native\AwesomeProject\node_modules\metro-file-map\node_modules\jest-worker\build\workers\processChild.js:116:5)
at execMethod (D:\MyCodes\react-native\AwesomeProject\node_modules\metro-file-map\node_modules\jest-worker\build\workers\processChild.js:120:5)
at process.messageListener (D:\MyCodes\react-native\AwesomeProject\node_modules\metro-file-map\node_modules\jest-worker\build\workers\processChild.js:38:7)
at process.emit (node:events:513:28) {
type: 'Error',
errno: -4070,
syscall: 'read',
code: 'EIO'
}
手机端同步显示Metro bundler连接失败,无法加载应用。
修复步骤
- 检查USB连接模式:断开手机USB,重新插拔,务必选择「文件传输」模式,不要选仅充电。确保电脑能正常访问手机存储,没有未处理的权限弹窗。
- 重置Metro缓存并重启服务:
- 按
Ctrl+C停止当前React Native服务 - 执行缓存清理命令:
npx react-native start --reset-cache - 重新启动安卓项目:
npx react-native run-android
- 按
- 核对Node.js版本:使用React Native官方推荐的LTS版本(如18.x或20.x),版本不匹配时用nvm切换:
nvm install 18 nvm use 18 - 重装依赖:
- 删除项目下的
node_modules文件夹和package-lock.json文件 - 执行
npm install重新安装所有依赖
- 删除项目下的
- 检查文件夹权限:确保项目文件夹(D:\MyCodes\react-native\AwesomeProject)给当前用户开了读写权限,右键文件夹→属性→安全页签确认。同时关掉可能拦截文件读取的杀毒软件或安全工具。
内容的提问来源于stack exchange,提问作者BALAJI GOVIND MALALI

