React Native安卓真机如何连接本地localhost:3000的Node Express后端
解决React Native真机连接本地Node Express后端的问题
我来帮你搞定这个真机无法连接后端的问题——核心原因是真机没法直接通过localhost或10.0.2.2访问你电脑上的本地服务器,这两个地址是安卓模拟器专属的。咱们一步步来解决:
1. 获取你的电脑本地IP地址(Windows系统)
打开命令提示符(CMD),输入以下命令:
ipconfig
在输出里找到无线局域网适配器 WLAN(Wi-Fi连接时)或者以太网适配器 以太网(有线连接时)下的IPv4地址,比如192.168.1.105,这个就是你的电脑在局域网内的可访问地址。
2. 修改React Native中的API请求地址
把你原代码里的http://10.0.2.2:3000替换成刚才获取的电脑IP,示例修改后的代码:
const send = async() => { const token = await AsyncStorage.getItem('userToken'); fetch("http://192.168.1.105:3000/customer/get-complaints-by-statusID", { method: "post", headers: { Accept: 'application/json', 'Content-Type': 'application/json', 'Authentication': `Bearer ${token}` }, body: JSON.stringify({ statusID: 2 }) }) // 后续的.then/.catch处理逻辑... }
3. 确保后端Express允许跨域请求
如果你的后端没有配置CORS,真机的请求会被RN的JS引擎拦截。在Express项目中安装并配置CORS:
首先安装依赖:
npm install cors
然后在Express入口文件(比如app.js)中添加配置:
const cors = require('cors'); // 开发环境可以先允许所有来源,生产环境再限制特定域名 app.use(cors()); // 可选:更严格的配置(指定允许的来源) // app.use(cors({ // origin: '*', // 或指定真机的访问域名/IP // credentials: true // }));
4. 开放电脑防火墙的3000端口
Windows防火墙可能会阻止外部设备访问你电脑的3000端口,需要手动开放:
- 打开「Windows Defender防火墙」→「高级设置」
- 点击「入站规则」→「新建规则」
- 选择「端口」→ 输入
3000→ 允许连接 → 勾选「域」「专用」「公网」(根据你的网络环境调整) - 给规则命名(比如"Node Express 3000端口")并保存
5. 确保手机和电脑连接同一个Wi-Fi网络
只有在同一个局域网下,真机才能访问到你电脑的本地IP,这是连接成功的前提!
额外检查点
- 确认你的Node Express服务器正在正常运行(执行
npm start或对应的启动命令) - 确认MSSQL数据库允许本地后端访问(因为后端部署在你电脑上,默认配置应该没问题,如果出现数据库连接错误,检查连接字符串是否正确)
这样调整之后,你的React Native真机应该就能和本地后端建立有效连接,完成登录操作了!
内容的提问来源于stack exchange,提问作者Sanduni Fernando
相关产品推荐
相关产品推荐

