Expo App出现TypeError: Network request failed错误求助
解决Expo iPhone测试时Network request failed问题及数据获取方法
替换localhost为电脑局域网IP
iPhone无法识别localhost,必须使用电脑在当前WiFi下的局域网IP(格式如192.168.x.x)。- 查看IP方式:Windows执行
ipconfig找到无线局域网适配器的IPv4地址;Mac/Linux执行ifconfig或ip addr查看en0对应的inet地址。 - 前端请求地址需改为
http://你的局域网IP:3000/、http://你的局域网IP:3000/firstPage,而非localhost:3000。
- 查看IP方式:Windows执行
确保服务器绑定0.0.0.0
后端服务器不能只绑定localhost,否则仅本机可访问,需改为0.0.0.0以接收局域网设备请求。示例Express监听代码:app.listen(3000, '0.0.0.0', () => { console.log('服务器运行在0.0.0.0:3000'); });验证/firstPage路由有效性
先在电脑浏览器用局域网IP访问http://你的IP:3000/firstPage,确认是否返回正确JSON:- 若浏览器也无法获取,检查路由定义是否正确(如是否为
app.get("/firstPage", ...))、SQL查询逻辑是否报错、是否调用res.json()返回数据。 - 带SQL查询的/firstPage路由示例:
app.get("/firstPage", async (req, res) => { try { const [rows] = await connection.query('SELECT * FROM your_table'); res.json({data: rows, message: '查询成功'}); } catch (err) { console.error('SQL查询错误:', err); res.status(500).json({error: '服务器内部错误'}); } });
- 若浏览器也无法获取,检查路由定义是否正确(如是否为
检查电脑防火墙设置
暂时关闭防火墙测试,或在防火墙规则中添加允许3000端口入站请求的权限,避免端口被拦截。配置Expo iOS网络权限
在app.json中添加HTTP请求允许配置,iOS默认限制非HTTPS请求:"ios": { "infoPlist": { "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": true } } }
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

