React Native Expo 本地主机请求在 Android 模拟器上不起作用

问题描述 投票:0回答:4

我只是使用“fetch”将 GET 请求发送到我的本地主机 API,但它显示网络失败。它可以将 GET 请求发送到其他非本地主机网站。

我想知道如何访问我的本地主机 API。环境是我使用NativeBase并通过Expo在android模拟器上运行它。世博连接是 LAN。

谢谢你。

android-emulator react-native expo
4个回答
3
投票

您必须使用 ip 而不是 localhost:

对于 Windows:ipconfig(IP 地址) 对于 Mac:networksetup -getinfo Wi-Fi(IP 地址)

请求是这样的:

axios.get('http://192.168.0.34')

我建议使用 axios 进行 React Native


1
投票

您可以使用

expo-constants
模块的清单在运行时获取 IP 地址。

如果您没有安装此模块,请运行

expo install expo-constants

import Constants from 'expo-constants';
const { manifest } = Constants;
...
const uri = `http://${manifest.debuggerHost
  .split(`:`)
  .shift()
  .concat(`:1000`)}`; // Switch to the port you use. ex)localhost:3000 => .concat(`:3000`)}

0
投票

无意中我找到了一个方法。进入Windows安全>防火墙和网络保护并关闭其中三个。然后你可以做两件事。 1-进入cmd并写入ipconfig,获取ip
2-在反应本机项目上: 从“expo-constants”导入常量; const { 清单 } = 常量; const uri =

ws://${manifest.debuggerHost.split(':').shift()}:3000
; 这样你就可以动态获取你的ip。 (切换您想要的端口)


0
投票

localhost 或 127.0.01 对我不起作用。

 import Constants from 'expo-constants';
const { manifest } = Constants;
const uri = `http://${manifest.debuggerHost
  .split(`:`)
  .shift()
  .concat(`:1000`)}`; 

这个有效

© www.soinside.com 2019 - 2024. All rights reserved.