我想在android上的expo app上运行create-react-native-app .
首先,我通过编写命令创建了项目
create-react-native-app test
然后我执行了
npm开始
然后从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
15 回答
找到了ipv4地址
打开世博会应用,然后点击从底部探索按钮
写exp:// [ipv4adress]:19000到搜索栏
然后你的应用程序将打开
在Windows中
在命令提示符下运行
ipconfig
获取ip4地址并复制它 .
比去
此PC>属性>高级系统设置>环境变量
添加以下系统变量:
REACT_NATIVE_PACKAGER_HOSTNAME
作为变量的值我必须粘贴ip4 .
然后运行
npm start
这对我有用首先,禁用未使用的网络连接 . 就我而言,它是VirtualBox . 也许它正在使用相同的端口 . 我不确定 . 禁用未使用的连接后,重新启动打包器 . 如果您使用npm然后键入
我尝试了很多解决方案,只有这样才能帮助我解决这个问题:
在Windows中:
转到窗口控制面板中的"Network and Connections"(网络和共享中心>更改适配器设置)
禁用您在此处可以看到的所有虚拟框
重启npm或纱线或世博会......
如果你使用git bash进行开发,那么Icruz4的这个解决方案将有所帮助
代替
set REACT_NATIVE_PACKAGER_HOSTNAME
使用:
注意:
当你跑步
npm start
Expo在输出中告诉您它正在使用的IP . 如果那个IP不是你想要的IP那么
REACT_NATIVE_PACKAGER_HOSTNAME
环境变量设置不正确
在Windows中
在我的git bash终端内工作,但不是cmd . 在git bash中,在我运行npm start之后,我得到了一个防火墙弹出窗口,我点击它允许它工作!
就我而言,防火墙设置本身并没有这样做 . 我的问题是VirtualBox网络设备优先考虑,而世博主机是在错误的网络上启动的 .
在Windows上,您可以运行
ipconfig
并查看您拥有的网络适配器 .npm
/yarn start
似乎在该列表中首先显示任何内容 .我从这里发现了这个:https://github.com/react-community/create-react-native-app/issues/60
如果列表中不需要其他网络适配器,则可以在“控制面板”的“网络连接”界面中禁用它们 .
如果您需要使用这些连接并进行世博会工作,那么我将遵循this process:
您只需要在Window Firewall中打开端口,一切都应该有效 .
1.在“开始”菜单上,单击“运行”,键入WF.msc,然后单击“确定” .
在具有高级安全性的Windows防火墙的左窗格中,右键单击“入站规则”,然后单击操作窗格中的“新建规则” .
在“规则类型”对话框中,选择“端口”,然后单击“下一步” .
在“协议和端口”对话框中,选择“TCP” . 选择“特定本地端口”,然后键入React端口实例的端口号,例如默认实例的19000 . 点击下一步 .
在“操作”对话框中,选择“允许连接”,然后单击“下一步” .
在“配置文件”对话框中,选择要在连接到数据库引擎时描述计算机连接环境的任何配置文件,然后单击“下一步” .
在“名称”对话框中,键入此规则的名称和说明,然后单击“完成” .
同样,您也可以打开端口19001 .
这个问题可以通过以下方式解决:
Setting your environment variable与替代说明here
要么
Assigning interface matrix priority for your network adapters,详细说明here或here .
要么
An Ubuntu machine is unable to open a port
进行任何更改后,请在测试之前重新启动计算机是否有效 .
祝好运!
我有同样的问题 . 问题是命令yarn start或npm start找到它找到的第一个启用的网络适配器,恰好是我(以及许多其他机器)上VirtualBox的适配器 . 解决方案是:
手动设置REACT_NATIVE_PACKAGER_HOSTNAME环境变量,或在Windows的网络连接中禁用未使用的网络适配器(见图)问题是Expo找到第一个网络适配器,而不是提供Internet连接的活动网络适配器 .
我完成了上下文中提到的所有事情 . 刚刚将我连接的WiFi网络从公共更改为私有 . 这对我有用
你可以解决这个问题笔记本电脑的IP地址为静态IP,让我们说192.168.1.69,然后你需要将本机打包器的IP地址改为你的笔记本电脑的同一个,
再次启动你的项目,你很高兴 .
我建议您安装expo应用程序以反应原生,链接到official guide here
然后,您可以使用Genymotion软件为您的应用程序模拟不同的环境设置:
如果您在终端“npm start”中使用本机反应,则以下内容适合您 . 我发现,如果我的应用程序成功运行,我的计算机的IpV地址,即终端中显示的和Expo应用程序上的相同,例如:
根据这一观察,我通过以下方式解决了这个问题:
关闭正在运行app的npm提示脚本
关闭世博会应用
通过在终端中运行命令找到您的IP:
如果它没有帮助,那么除了其他合理的努力之外,还要使用React开发人员推荐的后续步骤:
使用VirtualBox安装Genymotion
_999_在Genymotion网站注册
运行Genymotion软件和!!!登录
在您的设备中:登录您的展示应用,如果您没有,请创建帐户 .
在您的系统中:打开终端通过cd命令转到您的项目目录然后键入
sudo exp start
它会在您完成此操作后询问您的世博帐户登录详细信息 .它将为您提供扫描的qr代码 .
这是因为您的机器没有打开端口 .
在Ubuntu Run In终端中
sudo ufw status verbose
要查看打开端口,如果找不到19000端口,则需要打开端口然后再次运行
sudo ufw allow 19001/tcp
为本机提供http服务我使用此方法在我的ubuntu中解决了这个问题 . 我希望这能帮到您 .
在Windows防火墙中打开TCP访问端口在 Start 菜单上,单击 Run ,键入 WF.msc ,然后单击 OK .
在 Windows Firewall with Advanced Security 中,在 left pane 中,右键单击 Inbound Rules ,然后在操作窗格中单击 New Rule .
在 Rule Type 对话框中,选择 Port ,然后单击 Next .
在 Protocol and Ports 对话框中,选择 TCP . 选择 Specific local ports ,然后键入React端口实例的端口号,例如 19000 作为默认实例 . 单击 Next .
在 Action 对话框中,选择 Allow the connection ,然后单击 Next .
在 Profile 对话框中,选择要在连接到数据库引擎时描述计算机连接环境的任何配置文件,然后单击 Next .
在 Name 对话框中,键入此规则的名称和说明,然后键入 click Finish .
同样,您也可以打开端口 19001 .