iPhone端Expo调试RN WebView加载本地站点失败(错误-1004)怎么办?
解决React Native WebView在iPhone调试时无法连接本地服务的问题
这个问题我碰到过好多次了,核心就是你的iPhone没法和电脑上的本地服务建立连接,咱们一步步来排查解决:
确认设备在同一Wi-Fi网络
你的开发电脑和iPhone必须连接同一个局域网Wi-Fi,这是基础前提。如果一个连手机热点、一个连家里Wi-Fi,肯定没法互通。获取电脑正确的本地IP地址
别瞎试IP了,找你电脑当前Wi-Fi下的实际IP:- Mac:打开「系统设置」→「Wi-Fi」→ 点击Wi-Fi名称旁边的「i」图标,查看「IPv4地址」
- Windows:按下Win+R输入
cmd,打开命令提示符后输入ipconfig,找到「无线局域网适配器 Wi-Fi」下的「IPv4地址」
注意:10.0.2.2是安卓模拟器专用的回环地址,iPhone完全不适用,别再用这个了。
确保本地服务绑定到0.0.0.0
很多本地服务默认只绑定localhost,这样只能本机访问,其他设备连不上。你需要修改服务的启动参数,让它绑定到0.0.0.0(允许所有网络接口访问):- 比如React项目,启动命令改成:
HOST=0.0.0.0 npm start - 或者在
package.json的scripts里配置:"scripts": { "start": "HOST=0.0.0.0 react-scripts start" }
- 比如React项目,启动命令改成:
检查防火墙设置
电脑的防火墙可能会拦截iPhone的连接请求:- Windows:打开「Windows Defender防火墙」→「高级设置」→ 添加入站规则,允许TCP协议的3000端口通过
- Mac:打开「系统设置」→「网络」→「防火墙」→「防火墙选项」,确保你的本地服务(比如Node.js)被允许接收连接,或者临时关闭防火墙测试(调试完记得打开)
先在Safari里测试连通性
在iPhone的Safari浏览器里输入http://你的电脑IP:3000,如果能正常打开页面,说明网络和服务没问题,再去排查WebView的配置;如果Safari也打不开,那先解决网络/服务的问题。WebView的额外配置
如果Safari能打开但WebView不行,检查这两个点:- 给WebView添加
originWhitelist属性,允许访问本地IP:<WebView source={{ uri: 'http://你的电脑IP:3000' }} originWhitelist={['http://*', 'https://*']} // 调试时宽松设置,正式环境按需限制 /> - 配置iOS的网络访问权限:在Expo的
app.json里添加NSAppTransportSecurity设置,允许http请求(调试用,正式环境建议改用https):"ios": { "infoPlist": { "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": true } } }
- 给WebView添加
按这个流程走下来,基本就能解决那个NSURLErrorDomain -1004的错误了。
内容的提问来源于stack exchange,提问作者coffee.ai
相关产品推荐
相关产品推荐

