2

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

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

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

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

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

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

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

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

4

1 回答 1

2

您需要在本地运行 react 应用程序以使其访问本地后端,或者更改 localhost 应用程序的端口以使其可访问 Internet。

正如你所说,运行类似

$ rails server -b 0.0.0.0

将允许您访问它。

于 2019-10-12T16:13:35.390 回答