我正在创建一个本机应用程序,并且我创建的组件之一包含一个属性,该属性通过来自HTTP请求的数据填充。
现在,我正在从笔记本电脑托管服务器,但是我正在使用Expo应用程序在手机上测试该应用程序。由于这是两个单独的设备,因此http://localhost:3000调用无法正常工作,因此我无法确定我的组件是否正常工作。
我有什么方法可以在笔记本电脑上运行服务器并进行设置,以便Expo应用程序中的http请求到达服务器?
最佳答案
您可以使用Expo list 在运行时获取IP地址:
import Constants from "expo-constants";
const { manifest } = Constants;
const api = (typeof manifest.packagerOpts === `object`) && manifest.packagerOpts.dev
? manifest.debuggerHost.split(`:`).shift().concat(`:3000`)
: `api.example.com`;
这会将
api
常量设置为处于开发模式的本地开发计算机的地址以及生产中使用的任何地址。请注意,通过App Store / Play Store部署的应用似乎具有packagerOpts undefined
。这就是为什么我们还有其他typeof
条件的原因。在这种情况下,我们假设它是生产版本。有关 list 的更多信息:https://docs.expo.io/versions/latest/workflow/how-expo-works/#expo-development-server
关于react-native - 从Expo App调用本地托管的服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47417766/