提问者:小点点

在React Native中通过USB连接的iPhone访问Mac上的“localhost”时出现Axios网络错误


我正在尝试连接到一个在Mac(Catalina 10.15.7)上本地运行的firebase模拟器,并带有usb连接的iPhone6+(14.4.2)。url设置为:axios.defaults.baseURL=`http://$localhost:5001/firbase00/api。react-native应用程序可以成功地连接到本地运行的firebase仿真器和运行在iOS模拟器上的实时服务器。当我试图通过运行react本机代码的usb设备连接到本地服务器时,我遇到了一个网络错误。我需要在一个真实的设备上进行测试,因为ios模拟器不允许推送消息传递,而这正是我正在编写/测试的内容。我试过http和httpS,试过重命名本地主机和共享互联网连接,但没有什么乐趣。我也彻底地寻找了一个解决办法,但没有找到一个可行的办法。概要,代码可以在ios模拟器上工作,本地firebase服务器和活动firebase服务器,连接usb的设备可以连接到活动服务器,但不能连接到本地服务器。与本地服务器的物理设备连接有关。

运行:

  1. “Axios”:“^0.19.2”
  2. “反应”:“16.13.1”
  3. “反应-本机”:“^0.63.3”
  4. iPhone 6 plus 14.4.2.
  5. MacBook air Catalina 10.15.7.

共1个答案

匿名用户

是的,您需要在iOS应用程序中允许HTTP流量(而不是默认允许的HTTPS),您将手动插入info.plist(或者使用XCode)中的以下行。

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
</dict>

docs->https://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity

编辑:

我看到你使用的是FireBase--这是对我起作用的:

   import functions from '@react-native-firebase/functions';

   const address = Platform.select({
                                  ios: 'localhost',
                                  android:'192.168.0.39'
                                 });
    

   functions().useFunctionsEmulator(`http://${address}:5001`);

   auth().useEmulator(`http://${address}:9099`);

   // FIRESTORE IS NOT WORKING HTTP PREFIX ON LOCALHOST (SO FAR)
   firestore().settings({
     host: `${address}:8080`,
     ssl: false,
     persistence: false,
   });

记住还要构建本机部分(刷新是不够的)。