React Native启动远程调试时Metro报ENOENT无此文件或目录错误
问题根因
从报错日志可直接定位核心问题:Metro服务在做错误栈符号化时路径解析逻辑出错,错误将http://localhost:8081/index.bundle的远程资源地址当做相对路径,拼接在本地项目根目录/home/hery/Workspace/NyTiona/之后,导致系统找不到对应路径的文件。
该问题属于React Native 0.65.x版本的已知兼容性问题,和调试方式无关,因此USB、Wi-Fi调试都会稳定复现。
解决方案
按以下顺序操作即可解决:
- 第一步:清理所有缓存并重启服务
# 删除旧依赖和锁文件 rm -rf node_modules package-lock.json # 重新安装依赖 npm install # 清空Metro缓存启动服务 npx react-native start --reset-cache
- 第二步:修正调试服务器地址配置
如果你用真机调试,先执行端口映射命令:
之后摇晃设备调出开发菜单,选择adb reverse tcp:8081 tcp:8081Settings->Debug server host & port for device,填写你电脑的局域网IP+端口8081,不要直接使用localhost:8081。 - 第三步:添加网络权限配置
打开android/app/src/main/AndroidManifest.xml,在application标签中添加明文流量允许配置:<application android:usesCleartextTraffic="true" <!-- 其余原有配置保持不变 --> >
如果以上操作后问题仍存在,可临时降级到RN 0.64.3稳定版本规避该兼容性问题:
npm install react-native@0.64.3 react@17.0.2
内容的提问来源于stack exchange,提问作者Hery
相关产品推荐
相关产品推荐

