如何在 Expo 上通过 React Native 应用 运行 连接到本地 Rails 后端?

How do I connect to a local Rails back-end via a React Native app running on Expo?

我继承了一个相当复杂的 React Native 应用程序,所以如果我在问这个问题时不知道我应该知道的关于应用程序的一切,请提前道歉。

我有一个使用 Expo 的 React Native 应用程序。我 运行 expo start 在浏览器中启动 Metro。然后,我使用 LAN 选项通过 phone 上的 Expo 应用程序将我的 iPhone 连接到本地应用程序。当我使用 LAN 时,我通过看起来像 192.168.0.xxx:19000.

的 IP 地址连接到计算机上的本地应用程序

该应用程序在我的 phone 上加载正常,但每当我尝试网络请求时(即,对 Rails 服务器的 fetch 调用也会 运行ning我的本地机器),应用程序似乎无法连接到后端。

我正在 运行使用以下命令连接 Rails 服务器:rails server

Rails 服务器 运行ning 后,我可以在浏览器中转到 127.0.0.1:3000 查看在 Rails 中创建的应用程序的后端。

但是,每当我在 127.0.0.1:3000192.168.0.xxx:19000 从应用程序向 API 发出 fetch 请求时(xxx 是实际三位数),请求失败。基本上,我终其一生都无法弄清楚如何通过 Expo 从我的 phone 上的 React Native 应用程序 运行ning 向 Rails 服务器 运行 发出正确的请求在我的本地机器上 ning。

我尝试过 httphttps 之类的方法,但没有成功。我也用谷歌搜索了这个,但我仍然无法弄清楚发生了什么。部分问题是该应用程序本身是如此庞大和复杂,而且我对它仍然很陌生,所以我不确定我是否只是从根本上误解了 Expo 和 React Native 应该如何向后台发出请求-结束,或者如果应用程序本身有一些古怪的东西阻止我发出请求。

任何关于如何让应用程序正确连接到 Rails 服务器的 advice/ideas 将不胜感激。谢谢。

您还需要 运行 在本地运行 React 应用程序以使其访问本地后端,或者更改本地主机应用程序的端口以使其可以访问互联网。

如您所说,运行宁类似

$ rails server -b 0.0.0.0

将允许您访问它。