我正在尝试在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
Github问题:
https://github.com/react-community/create-react-native-app/issues/144#issuecomment-296631692
答案 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:
- 转到控制面板>网络和互联网>网络连接
- 右键单击所需的连接(更高优先级连接)
- 点击属性> Internet协议版本4
- 点击属性>高级
- 取消选中“自动指标”
- 在“界面指标”中输入10
- 点击确定
醇>重复较低优先级连接,但这次将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)
答案 4 :(得分:4)
答案 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
基于这种观察,我通过以下方式解决了这个问题:
通过终端中的运行命令找到您的IP:
ipconfig
使用您的IP在NodeJS命令提示符中运行命令(例如10.0.0.124)
set REACT_NATIVE_PACKAGER_HOSTNAME=10.0.0.124
启动Expo应用,扫描条形码
npm start
如果它没有帮助,那么除了其他合理的努力之外,还要使用React开发人员推荐的后续步骤:
答案 6 :(得分:3)
万一有人还在寻找答案。首先执行基本操作,首先通过打开网络配置禁用VirtualBox Host-Only Network
。这对我有用。
答案 7 :(得分:3)
在Windows中
在命令提示符下运行ipconfig
获取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%有效的解决方案是:
然后打开命令终端并运行:
set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Windows)
REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Mac & Linux)
答案 13 :(得分:1)
这个问题可以通过以下方式解决:
Setting your environment variable使用其他说明here
或者
Assigning interface matrix priority for your network adapters,详细说明here或here。
或
An Ubuntu machine is unable to open a port
进行任何更改后,请在测试之前重新启动计算机是否有效。
祝你好运!答案 14 :(得分:1)
我遇到了同样的问题。问题在于,命令yarn start或npm start会找到它发现的第一个启用的网络适配器,而该网络适配器恰好是我(以及许多其他机器)上VirtualBox的适配器。解决方案是:
手动设置REACT_NATIVE_PACKAGER_HOSTNAME环境变量,或者 在Windows的“网络连接”中禁用未使用的网络适配器(见图) 问题在于Expo会找到第一个网络适配器,而不是提供Internet连接的活动网络适配器。
答案 15 :(得分:0)
听起来很幼稚。但是只需重新启动计算机即可解决此问题。
答案 16 :(得分:0)
我遇到了同样的问题,但经过 research 后,我发现这是因为您的计算机之前已连接到多个适配器。 Expo 可能会选择其中之一的 IP 地址。为了避免这种情况
转到命令提示符并输入“ipconfig”。
复制无线 LAN 适配器 Wi-Fi 下的 IPv4 地址。
然后写下面的命令。
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 的权限窗口时,我遇到了同样的问题,我通过进入目录解决了这个问题
我只需双击并在新窗口中执行操作,我选择允许连接并保存
答案 21 :(得分:0)
更改您的网络设置:
答案 22 :(得分:0)
解决方案1:-将您的PC和移动设备都连接到同一网络,然后使用expo应用程序扫描QR。
解决方案2:-在浏览器的本地主机开发窗口中选择/ 将连接类型更改为“隧道提及” ,然后使用expo应用程序扫描QR。
我认为这会有所帮助:)
答案 23 :(得分:0)
在Windows环境下的npm start脚本后,我遇到了同样的问题。 解决了将移动设备与Windows开发环境放在同一网络上的问题。
答案 24 :(得分:0)
如果您已尝试了所有方法,但仍无法为您工作。将“连接”更改为“本地”,而不是“ LAN”,它对我来说工作正常。这不是最佳解决方案,但可以完成工作。
答案 25 :(得分:0)
此错误表示您的端口未打开 只需检查端口是否打开,您可以使用以下方式检查
sudo ufw status verbose
检查19000端口是否打开,然后需要它 如果端口未打开,请运行以下命令
sudo ufw allow 19000/tcp
sudo ufw allow 19001/tcp
因为不是http端口,所以您会出错。以上步骤解决您的问题 与Mac和Windows类似,请一次检查防火墙设置
答案 26 :(得分:0)
答案 27 :(得分:0)
在Windows中,
set REACT_NATIVE_PACKAGER_HOSTNAME=my-ip-address
在我的git bash终端内工作,但不是cmd。在git bash中,在我运行npm start之后,我得到了一个防火墙弹出窗口,我点击它允许它工作了!
答案 28 :(得分:0)
sudo exp start
完成此操作后,它将询问您的博览会帐户登录详细信息。答案 29 :(得分:0)
我尝试了许多解决方案,只有这样,我才能解决此问题:
在Windows中:
答案 30 :(得分:0)
您只需要在Window Firewall中打开端口,一切都应该正常工作。
1。在“开始”菜单上,单击“运行”,键入WF.msc,然后单击“确定”。
在具有高级安全性的Windows防火墙的左窗格中,右键单击“入站规则”,然后在操作窗格中单击“新建规则”。
在“规则类型”对话框中,选择“端口”,然后单击“下一步”。
在“协议和端口”对话框中,选择“ TCP”。选择特定的本地端口,然后键入React端口实例的端口号,例如默认实例为19000。单击下一步。
在“操作”对话框中,选择“允许连接”,然后单击“下一步”。
在“配置文件”对话框中,选择要描述要连接到数据库引擎的计算机连接环境的任何配置文件,然后单击“下一步”。
在“名称”对话框中,键入此规则的名称和描述,然后单击“完成”。
类似地,您也可以打开端口19001。