在具有Linux子系统的Windows 10上,Expo LAN模式无法按预期工作

时间:2019-02-28 08:09:19

标签: react-native expo

我正在尝试通过Expo运行React Native客户端。我的操作系统是Windows 10,我使用与该操作系统集成的Linux子系统来运行我的应用程序。我的应用程序分为客户端和服务器端。从Linux子系统,我通过npm start启动服务器。服务器已正确启动并正在运行。然后,我通过npm start启动客户端。这也将启动Expo,并且Expo页面会在我的浏览器中自动打开。因此,一切似乎都可以很好地运行我的应用。

在Windows上,我安装了带有Android模拟器的Android Studio。在Expo网页上,我可以在隧道模式中运行我的应用。我的应用程序在Android设备(通过单击Expo网页上的“在Android设备/模拟器上运行”按钮开始)和物理设备(即iPhone)上均可以正常启动。因此,在这种情况下,我可以扫描QRCode并将我的应用加载到手机上)。一切都按预期运行。

问题是我需要通过 LAN模式运行我的应用程序。因此,我通常从Expo网页从Tunnel切换到LAN,exp地址会更改,然后尝试以与我之前介绍的相同的方式在模拟器和物理设备上重新加载应用程序。这次物理设备将无法加载应用程序,并引发以下错误:

  

加载请求的应用程序时出现问题。看来你可能   使用LAN URL。确保您的设备与以下设备位于同一网络上   服务器或尝试使用隧道。

我的手机和计算机连接到同一网络。我认为发生此行为的唯一原因是防火墙或防病毒软件导致了此问题。不幸的是我还不能关闭它们。如果您知道导致此问题的其他原因,请在答案中写下来。

但是,真正的问题(这是我在这里提出问题的原因)是关于Android模拟器的。实际上,当在LAN模式下并单击“在Android设备/仿真器上运行”时,仿真器开始运行该应用程序,我可以看到我的应用程序的第一个屏幕(因此通信似乎工作正常)。在底部,显示通常的消息Downloading Javascript Bundle,但是这一次达到100%时会抛出错误,并且每次尝试时该错误总是不同的(对我来说这没有意义) )。

我到目前为止遇到的一些错误:

  • 意外的标识符“ to”。以')'结尾的复合表达式。
  • 意外的标识符“目标”。
  • 意外的标识符'onPress'。期望')'结束对象文字。
  • 意外的EOF。
  • 找不到变量:interopRequireDefault。
  • 意外的标识符'reRegExpChar'。

您可以在下面找到其中一个错误的图片作为示例(我覆盖了文件路径):

我尝试删除客户端应用程序的node_modules文件夹,然后再次运行npm install,但没有任何更改。我尝试在模拟器上卸载Expo应用程序,然后通过Expo网页再次安装它,但没有任何更改。

旁注:

  • 我在Linux子系统中同时安装了Expo和React Native
    以及Windows本身(npm,节点等)上。
  • 我无法从Windows启动我的应用:npm start必须 从Linux子系统运行。

您对此问题有解释和/或解决方案吗?

编辑:似乎有时该应用程序可以在LAN模式下启动应用程序而没有任何问题,但更常见的是,它会引发类似于我上面列出的错误。似乎这种行为(应用程序是否启动)完全是随机的。

0 个答案:

没有答案