网络响应超时错误(create-react-native-app)(expo)

时间:2017-04-24 16:12:36

标签: react-native react-native-android expo create-react-native-app

我正在尝试在android中的expo app上运行create-react-native-app。

首先,我通过编写命令

创建了项目
  

create-react-native-app test

然后我执行了

  

npm start

然后从expo app扫描了qr代码。

但在扫描QR码后,我收到以下错误:

Uncaught Error: Java.net,sockettimeoutException: failed to connect to after 10000ms

enter image description here

Github问题:

https://github.com/react-community/create-react-native-app/issues/144#issuecomment-296631692

31 个答案:

答案 0 :(得分:42)

这是因为您的机器没有打开端口。

在Ubuntu Run In终端

sudo ufw status verbose 要查看打开端口,如果找不到19000端口,则需要使用

打开端口
sudo ufw allow 19000/tcp

然后再次运行

sudo ufw allow 19001/tcp

为反应本机提供http我使用此方法在我的ubuntu中解决了这个问题。我希望这会对你有所帮助。

在Windows防火墙中打开端口以进行TCP访问 在开始菜单上,点击 Run ,输入 WF.msc ,然后点击 {{1} }

具有高级安全性的Windows防火墙中,在左侧窗格中,右键单击入站规则,然后单击 {操作窗格中的{1}}

规则类型对话框中,选择端口,然后点击下一步

协议和端口对话框中,选择 TCP 。选择特定本地端口,然后键入React端口实例的端口号,例如 19000 作为默认实例。点击下一步

操作对话框中,选择允许连接,然后点击下一步

配置文件对话框中,选择要在连接到数据库引擎时描述计算机连接环境的任何配置文件,然后单击下一步

名称对话框中,键入此规则的名称和说明,然后单击“完成”

同样,您也可以打开端口 19001

答案 1 :(得分:41)

就我而言,防火墙设置本身并没有这样做。我的问题是VirtualBox网络设备优先考虑,世博会主机是在错误的网络上启动的。

在Windows上,您可以运行ipconfig并查看您拥有的网络适配器。 npm / yarn start似乎会在该列表中首先显示任何内容。

我从这里发现了这个:https://github.com/react-community/create-react-native-app/issues/60

如果您不需要列表中的其他网络适配器,则可以在“控制面板”的“网络连接”界面中禁用它们。

如果您需要使用这些连接进行世博会工作,那么就可以解决我跟随的问题this process

  
      
  1. 转到控制面板>网络和互联网>网络连接
  2.   
  3. 右键单击所需的连接(更高优先级连接)
  4.   
  5. 点击属性> Internet协议版本4
  6.   
  7. 点击属性>高级
  8.   
  9. 取消选中“自动指标”
  10.   
  11. 在“界面指标”中输入10
  12.   
  13. 点击确定
  14.         

    重复较低优先级连接,但这次将20放入'Interface Metric'

         

    现在,您将使用优先级较高的连接作为默认设置。

答案 2 :(得分:21)

您可以通过将笔记本电脑的IP地址修复为静态IP来解决这个问题,比方说192.168.1.69,然后您需要将反应原生包装程序的IP地址更改为与您的笔记本电脑相同,使用

set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Windows)
REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Mac & Linux)

再次开始你的项目,你很高兴。

答案 3 :(得分:5)

enter image description here

首先,禁用未使用的网络连接。就我而言,它是VirtualBox。也许它使用相同的端口。我不确定。禁用未使用的连接后,重新启动打包器。如果你使用了npm,那么输入

npm start

答案 4 :(得分:4)

  • 找到ipv4地址
  • 打开expo应用,然后点按从底部浏览按钮
  • 将exp:// [ipv4adress]:19000写入搜索栏
  • 然后您的应用将会打开

答案 5 :(得分:3)

我建议您安装expo应用程序以反应原生,链接到official guide here

npm install -g exp

然后,您可以使用Genymotion软件为您的应用程序模拟不同的环境设置:

exp start

如果您在终端“npm start”中使用本机反应,则以下内容适合您。 我发现如果我的应用程序成功运行我的计算机的IpV地址,在终端中显示并且在Expo应用程序上是相同的,例如:

ipconfig -> IPv4 Address. . . . . . . . . . . : 10.0.0.124
exp://10.0.0.124:19000

基于这种观察,我通过以下方式解决了这个问题:

  1. 关闭运行应用程序的npm提示脚本
  2. 关闭Expo应用
  3. 通过终端中的运行命令找到您的IP:

    ipconfig
    
  4. 使用您的IP在NodeJS命令提示符中运行命令(例如10.0.0.124)

    set REACT_NATIVE_PACKAGER_HOSTNAME=10.0.0.124
    
  5. 启动Expo应用,扫描条形码

    npm start
    

    如果它没有帮助,那么除了其他合理的努力之外,还要使用React开发人员推荐的后续步骤:

  6. 使用VirtualBox安装Genymotion
  7. 在Genymotion网站注册
  8. 运行Genymotion软件和!!!登录

答案 6 :(得分:3)

万一有人还在寻找答案。首先执行基本操作,首先通过打开网络配置禁用VirtualBox Host-Only Network。这对我有用。

答案 7 :(得分:3)

在Windows中

  1. 在命令提示符下运行ipconfig

  2. 获取ip4地址并复制它。

比去

  1. 此PC>属性>高级系统设置>环境变量
  2. 添加以下系统变量:{​​{1}}
  3. 作为变量的值,我必须粘贴ip4。

然后运行REACT_NATIVE_PACKAGER_HOSTNAME 对我来说有用

答案 8 :(得分:2)

如果你使用git bash进行开发,那么Icruz4的这个解决方案将有所帮助

而不是

set REACT_NATIVE_PACKAGER_HOSTNAME

使用:

export REACT_NATIVE_PACKAGER_HOSTNAME='192.168.1.123'

注意:

运行时

npm start

Expo在输出中告诉您它正在使用的IP。如果该IP不是您想要的IP,那么

REACT_NATIVE_PACKAGER_HOSTNAME

环境变量未正确设置

答案 9 :(得分:2)

我已经完成了上下文中提到的所有内容。 刚刚将连接的WiFi网络从公共更改为私有。 这对我有用

答案 10 :(得分:1)

就我而言,发生此问题是因为Expo Android应用需要“ 在其他应用上绘制 权限,而我没有给出。因此,我将此许可授予Expo Expo应用程序并解决了问题。

答案 11 :(得分:1)

如果您尝试了所有其他答案所建议的所有内容,但仍然无法使用,请同时检查您的计算机和电话是否已连接至同一WIFI网络。对我来说,这是一个小时的浪费。

答案 12 :(得分:1)

一种最简单且100%有效的解决方案是:

  1. 启用开发计算机( PC或台式机)的移动热点,并将您的Android设备与此热点连接。
  2. 转到控制面板>网络和Internet>网络连接 您将如图所示进入此处:Network Connections setting
  3. 然后通过右键单击相关的 连接,然后单击属性-> Internet协议,将“本地连接”的IP地址(“桌面热”)设置为所需的IP地址,例如:192.168.1.69。版本4(TCP / IPv4)->属性 。然后将此连接的优先级设置为最高,这是最好的描述here
  4. 然后打开命令终端并运行:

    set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Windows)
    REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Mac & Linux)
    
  5. 然后通过在expo项目文件夹中运行 npm start 来重新启动expo服务器,并通过使用expo应用程序扫描生成的QR码在Android设备上运行该应用程序。

答案 13 :(得分:1)

这个问题可以通过以下方式解决:

Setting your environment variable使用其他说明here

或者

Assigning interface matrix priority for your network adapters,详细说明herehere

An Ubuntu machine is unable to open a port

进行任何更改后,请在测试之前重新启动计算机是否有效。

祝你好运!

答案 14 :(得分:1)

我遇到了同样的问题。问题在于,命令yarn start或npm start会找到它发现的第一个启用的网络适配器,而该网络适配器恰好是我(以及许多其他机器)上VirtualBox的适配器。解决方案是:

手动设置REACT_NATIVE_PACKAGER_HOSTNAME环境变量,或者 在Windows的“网络连接”中禁用未使用的网络适配器(见图) 问题在于Expo会找到第一个网络适配器,而不是提供Internet连接的活动网络适配器。

enter image description here

答案 15 :(得分:0)

听起来很幼稚。但是只需重新启动计算机即可解决此问题。

答案 16 :(得分:0)

我遇到了同样的问题,但经过 research 后,我发现这是因为您的计算机之前已连接到多个适配器。 Expo 可能会选择其中之一的 IP 地址。为了避免这种情况

  1. 转到命令提示符并输入“ipconfig”。

  2. 复制无线 LAN 适配器 Wi-Fi 下的 IPv4 地址。

  3. 然后写下面的命令。

set REACT_NATIVE_PACKAGER_HOSTNAME=(Your IP here)

答案 17 :(得分:0)

我通过允许端口 19000 和 19001 通过防火墙入站,然后将我的家庭 WiFi 网络更改为私有网络(如果您在上面的 2 个防火墙规则中允许公共连接,则不需要这样做)。

我只能使用命令提示符执行此操作,而不能使用 WSL2 上的 Ubuntu。如果有人知道如何通过适用于 Linux 的 Windows 子系统执行此操作,请告诉我们。

答案 18 :(得分:0)

我找到了适用于 Windows 8 和 10 的解决方案。

官方支持链接 - SEE HERE

<块引用>

当您第一次连接到 Wi-Fi 网络时,您可以将其设置为公共或私有,具体取决于网络和您想要执行的操作:

私有网络。将此用于您信任的网络,例如家庭或工作网络。当网络设置为私有时,网络上的其他设备可以发现您的电脑,并且您可以使用您的电脑进行文件和打印机共享。

公共网络。将此用于您外出时连接的网络,例如咖啡店的 Wi-Fi 网络。您的 PC 将对网络上的其他设备隐藏,并且您无法使用您的 PC 进行文件和打印机共享。

答案 19 :(得分:0)

使用 -- 隧道标志启动 EXPO 应该会有所帮助:$ expo start --tunnel

答案 20 :(得分:0)

当我取消节点 js 的权限窗口时,我遇到了同样的问题,我通过进入目录解决了这个问题

  1. 在“开始”菜单上,单击“运行”,键入 WF.msc,然后单击“确定”。
  2. 在 Windows 防火墙和高级安全性中,在入站规则的左侧面板中,我有两个选项或规则禁用了 Node.js 服务器端 Javascript。

我只需双击并在新窗口中执行操作,我选择允许连接并保存

答案 21 :(得分:0)

更改您的网络设置:

  1. 网络和Internet设置
  2. 状态
  3. 更改连接属性
  4. 选中的公共选项

答案 22 :(得分:0)

When i open Expo(Android application) for scanning the QR code i am facing same issue mention exactly same in the image.

解决方案1:-将您的PC和移动设备都连接到同一网络,然后使用expo应用程序扫描QR。

解决方案2:-在浏览器的本地主机开发窗口中选择/ 将连接类型更改为“隧道提及” ,然后使用expo应用程序扫描QR。

我认为这会有所帮助:)

答案 23 :(得分:0)

在Windows环境下的npm start脚本后,我遇到了同样的问题。 解决了将移动设备与Windows开发环境放在同一网络上的问题。

答案 24 :(得分:0)

如果您已尝试了所有方法,但仍无法为您工作。将“连接”更改为“本地”,而不是“ LAN”,它对我来说工作正常。这不是最佳解决方案,但可以完成工作。

答案 25 :(得分:0)

此错误表示您的端口未打开 只需检查端口是否打开,您可以使用以下方式检查

sudo ufw status verbose

enter image description here 检查19000端口是否打开,然后需要它 如果端口未打开,请运行以下命令

 sudo ufw allow 19000/tcp

enter image description here 其他端口运行以下命令

sudo ufw allow 19001/tcp

因为不是http端口,所以您会出错。以上步骤解决您的问题 与Mac和Windows类似,请一次检查防火墙设置

答案 26 :(得分:0)

我浪费了一整天的时间寻找答案,最后我意外地找到了解决方案。只需将局域网之间的连接更改为隧道

下面是图片

enter image description here

答案 27 :(得分:0)

在Windows中,

set REACT_NATIVE_PACKAGER_HOSTNAME=my-ip-address

在我的git bash终端内工作,但不是cmd。在git bash中,在我运行npm start之后,我得到了一个防火墙弹出窗口,我点击它允许它工作了!

答案 28 :(得分:0)

  1. 在设备上:登录博览会应用程序,如果没有帐户,请创建一个帐户。
  2. 在您的系统中:打开终端,通过cd命令转到您的项目目录,然后键入sudo exp start 完成此操作后,它将询问您的博览会帐户登录详细信息。
  3. 它将为您提供要扫描的二维码。

答案 29 :(得分:0)

我尝试了许多解决方案,只有这样,我才能解决此问题:

在Windows中:

  • 转到窗口控制面板中的“网络和连接”(“网络和共享中心”>“更改适配器设置”)
  • 禁用所有您可以在此处看到的虚拟框
  • 重新启动npm或纱线或博览会...

答案 30 :(得分:0)

您只需要在Window Firewall中打开端口,一切都应该正常工作。

1。在“开始”菜单上,单击“运行”,键入WF.msc,然后单击“确定”。

在具有高级安全性的Windows防火墙的左窗格中,右键单击“入站规则”,然后在操作窗格中单击“新建规则”。

在“规则类型”对话框中,选择“端口”,然后单击“下一步”。

在“协议和端口”对话框中,选择“ TCP”。选择特定的本地端口,然后键入React端口实例的端口号,例如默认实例为19000。单击下一步。

在“操作”对话框中,选择“允许连接”,然后单击“下一步”。

在“配置文件”对话框中,选择要描述要连接到数据库引擎的计算机连接环境的任何配置文件,然后单击“下一步”。

在“名称”对话框中,键入此规则的名称和描述,然后单击“完成”。

类似地,您也可以打开端口19001。