React Native调用fetch遇ENOENT错误,本地API请求失败求助
React Native调用本地REST API:ENOENT错误与网络连接问题解决
修复ENOENT文件缺失错误
该错误由Metro服务器无法找到Hermes字节码文件导致,与fetch请求本身无关,可通过以下步骤解决:
- 重置Metro缓存:在项目根目录执行
npx react-native start --reset-cache,彻底清除缓存以修复路径引用异常。 - 重装项目依赖:删除
node_modules文件夹和package-lock.json(或yarn.lock)文件,执行npm install(或yarn install)后重启项目。 - 调整Hermes配置:打开
android/app/build.gradle,若暂时不需要Hermes,可将enableHermes设为false,验证是否能正常运行;若需保留Hermes,尝试清理Android项目构建缓存(执行cd android && ./gradlew clean)。
解决本地API网络连接失败问题
使用localhost出现网络错误是因为模拟器/真机的localhost指向自身而非电脑主机,需根据运行环境调整请求地址:
- Android模拟器:使用
http://10.0.2.2:3000/Users是正确的,但需确保电脑防火墙未拦截3000端口,且模拟器与电脑处于同一网络环境。 - iOS模拟器:可直接使用
http://localhost:3000/Users,或电脑的局域网IP地址(如http://192.168.1.100:3000/Users)。 - 真机测试:必须使用电脑的局域网IP(不能用
10.0.2.2或localhost),同时确保手机与电脑连接同一WiFi,API服务器监听0.0.0.0而非127.0.0.1(修改API代码为app.listen(3000, '0.0.0.0', ...))。
额外验证步骤
- 在模拟器内置浏览器中直接访问API地址(如
http://10.0.2.2:3000/Users),确认能正常返回数据,排除网络环境问题。 - 检查API服务器日志,确认请求是否到达服务器,排查是否存在跨域或路由配置问题(React Native的fetch默认不限制跨域,但需确保API路由正确)。
内容的提问来源于stack exchange,提问作者Azam
相关产品推荐
相关产品推荐

