如何在Expo React Native安卓应用中开启HTTP本地端口创建API路由
解决Expo Android应用中创建本地API路由的问题
方案1:使用expo-local-server启动本地HTTP服务器
这个库专为Expo应用设计,可直接在设备内启动本地服务器,支持Android和iOS:
- 安装依赖:
npx expo install expo-local-server
- 服务器代码示例:
import { startServerAsync } from 'expo-local-server'; import express from 'express'; const app = express(); app.use(express.json()); // 定义测试API路由 app.get('/api/test', (req, res) => { res.json({ message: '本地API请求成功' }); }); // 启动服务器 async function startLocalServer() { try { const { port } = await startServerAsync(app); console.log(`本地服务器运行在端口 ${port}`); // 应用内直接访问地址:http://localhost:${port}/api/test } catch (error) { console.error('启动服务器失败:', error); } } startLocalServer();
- 注意事项:
- Android设备上
localhost和127.0.0.1均指向设备本身,直接使用即可 - 确保
app.json中配置了INTERNET权限(Expo默认已包含,自定义权限列表时需确认)
- Android设备上
方案2:Express + Expo网络配置
无需专用库,用Express配合expo-network绑定设备本地IP:
- 安装依赖:
npx expo install express expo-network
- 代码示例:
import express from 'express'; import * as Network from 'expo-network'; const app = express(); app.use(express.json()); // 定义数据接口 app.get('/api/data', (req, res) => { res.send({ data: '来自本地API的内容' }); }); async function startServer() { const localIp = await Network.getIpAddressAsync(); const port = 3000; app.listen(port, localIp, () => { console.log(`服务器运行在 http://${localIp}:${port}`); // 应用内访问可用 http://localhost:3000 或 http://${localIp}:3000 }); } startServer();
- 关键说明:
- 绑定本地IP后,同一局域网设备也可访问;仅应用自身访问时,
localhost更便捷 - Android系统限制低端口使用,建议选择1024以上端口(如3000、8080)
- 绑定本地IP后,同一局域网设备也可访问;仅应用自身访问时,
常见问题排查
- 端口占用:通过
expo-local-server自动分配可用端口,或手动更换其他端口 - 权限缺失:检查
app.json的android.permissions是否包含INTERNET - 模拟器/真机差异:Android模拟器用
10.0.2.2指向电脑localhost;真机本地服务器直接用localhost
内容的提问来源于stack exchange,提问作者nguyễn huy
相关产品推荐
相关产品推荐

