React-Native Error:连接到http:// localhost:8081 / debugger-proxy?role = client timed out

时间:2016-05-22 05:34:50

标签: react-native

在显示此命令之前,我运行react-native run-ios命令,我的应用程序显示3秒钟。我在ios模拟器上运行

enter image description here

  

ExceptionsManager.js:76连接到   http://localhost:8081/debugger-proxy?role=client超时了。你是   运行节点代理?如果您在设备上运行,请检查您是否   在RCTWebSocketExecutor.m中拥有正确的IP地址。

24 个答案:

答案 0 :(得分:27)

我经常遇到这个问题。通常在我开发远程调试器时,我会保存代码破解的错误。

尝试重新加载...如果没有解决它: crlt + cmd + z。然后停止远程调试,然后刷新。这将解决它,但现在你丢失了调试器。再来一次...... crlt + cmd + z。这次开始远程调试,然后再次刷新。你的项目应该回来,好好去。

这适合我,但它非常烦人且耗时。我希望有人有更好的方法。

答案 1 :(得分:21)

我通过删除iOS主屏幕上模拟器中的项目应用程序,设法让它无需创建新项目。现在工作正常。

答案 2 :(得分:20)

对于远程调试,您的两台设备必须连接到同一个wifi(网络)。

答案 3 :(得分:9)

这似乎发生在我身上,因为我已经重新启动了react-native packager,而我仍然打开了一个Chrome调试器,该调试器已连接到之前的打包器/模拟器实例。

杀死调试器Chrome标签并再次尝试run-ios似乎解决了这个问题,没有任何重启或其他欺诈行为。

答案 4 :(得分:4)

您的路由器可能出现问题。尝试通过iPhone热点连接到wifi。

On github我找到了解决方法,如何在Mac和iPhone上设置DNS以解决此错误:

  1. 在你的开发机器上,系统偏好 - >网络 - > Wi-Fi - > adcanced - > nameOfYourNetwork
  2. 在DNS标签中,将IP更改为8.8.8.8
  3. 在iPhone上进行相同的DNS更改

答案 5 :(得分:3)

我忘记在发布版本之后忘记切换回使用索引文件而不是jsbundle时出现此错误。

我有

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];

而不是

jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];

切换到索引文件并重新构建并且它有效。

答案 6 :(得分:2)

就我而言,我和手机的网络不同。不需要SIM卡,我只需要确保我在同一个网络上(我们这里有工作和访客网络)。在RN的文档中有一些注意事项,你可以结账(中间有一个粉红色的盒子,我们都面临代理问题):

http://facebook.github.io/react-native/docs/running-on-device.html

答案 7 :(得分:2)

对我来说,这是在尝试调试真实设备时发生的。问题是我的计算机和真实设备不在同一WiFi上。

答案 8 :(得分:1)

#if DEBUG
jsCodeLocation = [NSURL URLWithString:@"http://192.168.11.21:8081/index.bundle?platform=ios&dev=true"];
#else
#warning "PRODUCTION DEVICE"
  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#endif

您可以从此链接中找到您的IP地址 https://kb.wisc.edu/page.php?id=6526

答案 9 :(得分:1)

发生这种情况是因为我正在通过具有强制门户(又是一个弹出窗口,要求您在连接到互联网之前填写一些信息)的WiFi网络进行连接。

请确保您通过没有强制门户的WiFi网络进行连接。 甚至您手机上的个人热点都可以解决问题!

这是我从未读过的参考书,花了我几个小时:

如果有任何问题,请确保Mac和设备位于同一网络上并且可以相互连接。许多具有强制门户的开放式无线网络都配置为阻止设备访问网络上的其他设备。在这种情况下,您可以使用设备的“个人热点”功能。

https://facebook.github.io/react-native/docs/running-on-device#troubleshooting

答案 10 :(得分:1)

如果看到“已经连接了另一个调试器”:听起来很傻,但是请不要忘记在后台检查Chrome窗口,它可能是“另一个调试器”。

当您点击“启动JS调试”时,React Native将使用调试器打开一个新的Chrome窗口。如果您在macOS上打开了多个Chrome窗口(没有选项卡),则看不到任何视觉上的提示,即存在多个窗口,因此您可能会在前景窗口中看到“已连接另一个调试器”,而不会不能意识到另一个调试器是后台的Chrome窗口。

答案 11 :(得分:1)

对我来说这可行:

-停止远程js调试,

-关闭浏览器上的远程js调试器页面,

-运行React Native Debugger,

-按ctrl + t并输入React Native pakager端口并确认,

-在模拟器上按ctrl + M并进行远程js调试,

很高兴!

答案 12 :(得分:1)

我修复了在“捆绑反应本机代码和图像”构建阶段标签主要目标中添加脚本的问题。我只是添加了export DISABLE_XIP=NOTHANKS

enter image description here

问题是真实设备试图在xip.io域下连接到我的ip

我认为当我们要在xCode项目中添加自定义图像资产时,此脚本是必需的,但是您可以在“报表导航器”选项卡中检查ip的url是否错误。 enter image description here

我的设置 react: 16.3.1, react-native-cli: 2.0.1 react-native: 0.55.4 xCode 9.4.1

以下是关于xip.io的原始本机文档(“疑难解答”一章) https://facebook.github.io/react-native/docs/running-on-device

这里有禁用XIP的可能性。 https://github.com/facebook/metro/commit/079dcaed990abb6754c03113362e4f537cd32a24

这是我尝试此解决方案时发现的提示 https://github.com/facebook/react-native/issues/12786

答案 13 :(得分:0)

我遇到了相同的错误,尽管它与网络相同。

从您的设备中删除该应用,然后重新构建。会起作用。

答案 14 :(得分:0)

我做了很多尝试,最后通过将NSAllowsArbitraryLoads添加到info.plist来解决了这个问题。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

答案 15 :(得分:0)

我在iOS上遇到了同样的问题。

以下技巧对我有用:

  • 在Xcode中打开项目。
  • 转到产品 - &gt;方案 - &GT; EditScheme-&GT;运行。
  • Envirionment变量点击 + 签名。
  • 使用值 OS_ACTIVITY_MODE 添加标记 disable
  • 从Xcode运行您的应用程序(在此封闭包装器之前。)

希望这会对某人有所帮助。

答案 16 :(得分:0)

这也发生在我身上。我以某种方式修复它重新启动...去图。我猜测由于端口8081已被另一个进程占用,因此Metro Bundler无法启动。重新启动后,我再次运行react-native run-ios,这次模拟器正常启动而没有错误。

请注意,这是在一个全新的项目中发生的。

答案 17 :(得分:0)

对我来说,以上解决方案似乎都不起作用。我尝试终止连接,重新加载捆绑包,停止并再次运行npm start,但未成功。 最终对我有用的是在再次启动之前清除npm缓存:

npm start --clear-cache

此后,我重新加载了捆绑包,调试器已正确连接。

答案 18 :(得分:0)

从模拟器或真实设备中删除应用程序并重建项目。这对我有用。

答案 19 :(得分:0)

在Mac上工作。
我通过启用“ Internet共享”解决了它。
-转到设置->共享
-通过“ USB 10/100/1000 LAN”共享您的连接
-使用以下计算机:“ Wi-fi”
-检查“ Internet共享”->创建网络
-在您的iPhone中连接到新网络
-重新加载Metro和Xcode

答案 20 :(得分:0)

这发生在我身上,我正在用我的实际手机开发模拟器。我必须摇晃我的实际电话,然后按“远程调试”选项,这在浏览器中使用活动的调试器加载了新的http://localhost:19001/debugger-ui/页面。

答案 21 :(得分:0)

iOS 14的更新:

enter image description here

(来自https://www.iphonetricks.org/ios-14-local-network-privacy-feature/的图片)

在iOS 14上,当您首次启动应用程序时,iOS会要求您允许扫描本地网络。您需要允许,否则该应用将无法连接到Mac上的远程调试器。

答案 22 :(得分:0)

  1. 打开你的/etc/hosts
  2. 检查它们是否存在
127.0.0.1 localhost
::1       localhost

如果没有,添加它们,然后再次yarn ios。 如果它们存在,抱歉,我无能为力

答案 23 :(得分:0)

只想提一下,当您通过 RN 在 iOS 上安装新应用程序时,您的设备会询问您有关通过 WiFi 连接设备的问题,等等。我一定是点击了错误的东西并卡在了那个状态。从我的设备上删除应用程序,然后重新安装(通过 RN)会出现该对话框,我可以接受它。