React native - 连接没有连接处理程序错误含义?

时间:2017-05-20 03:40:33

标签: ios react-native connection

我创建了一个新的反应项目,当我在iOS上从xcode运行它时,控制台给了我这个:

2017-05-19 23:25:34.119 [info][tid:main][RCTBatchedBridge.m:77] Initializing <RCTBatchedBridge: 0x6100001a6c80> (parent: <RCTBridge: 0x6100000c46e0>, executor: RCTJSCExecutor)
2017-05-19 23:25:51.287 [info][tid:main][RCTRootView.m:295] Running application test ({
    initialProps =     {
    };
    rootTag = 1;
})
2017-05-19 23:25:51.289 [info][tid:com.facebook.react.JavaScript] Running application "test" with appParams: {"rootTag":1,"initialProps":{}}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF
2017-05-19 23:25:51.299771-0400 test[21948:1121429] [] nw_connection_get_connected_socket_block_invoke 3 Connection has no connected handler
2017-05-19 23:25:53.335282-0400 test[21948:1121426] [] nw_connection_get_connected_socket_block_invoke 4 Connection has no connected handler
2017-05-19 23:25:55.349190-0400 test[21948:1120112] [] nw_connection_get_connected_socket_block_invoke 5 Connection has no connected handler

2017-05-19 23:25:51.299771-0400 test[21948:1121429] [] nw_connection_get_connected_socket_block_invoke 3 Connection has no connected handler这些行是什么意思以及如何解决问题?

当我尝试在我的应用程序中使用fetch并发现它不起作用时,我首先注意到了这一点。我在控制台中发现了这些消息,后来发现这些消息都发生在我的所有应用程序中,所以我认为这意味着它是我的配置问题?

我创建了一个新的测试程序来测试导致这种情况的原因并发现它发生在一个全新的项目上。下面是我的代码是生成上面的日志输出:

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';

export default class test extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          Welcome to React Native!
        </Text>
        <Text style={styles.instructions}>
          To get started, edit index.ios.js
        </Text>
        <Text style={styles.instructions}>
          Press Cmd+R to reload,{'\n'}
          Cmd+D or shake for dev menu
        </Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

AppRegistry.registerComponent('test', () => test);

6 个答案:

答案 0 :(得分:44)

尝试以下过程

Xcode菜单 - &gt;产品 - &gt;编辑方案......

环境变量 - &gt;添加 - &gt;名称:“OS_ACTIVITY_MODE”,值:“禁用”

再次运行您的应用

答案 1 :(得分:16)

我找到了解决方案:

关闭操作系统活动模式的详细信息

  1. 从xcode菜单,Project - &gt;方案 - &gt;编辑方案。
  2. 然后选择左侧的Run,然后选择右侧的Arguments标签。
  3. Environment Variables中添加名称OS_ACTIVITY_MODE,将值添加为disable
  4. 或者见下图。

    enter image description here

    注意:图片的赠送金额为Ramkrishna Sharma

答案 2 :(得分:9)

此错误最有可能来自内置于react-native以连接到react-devtools的websocket。如果您在调试时没有运行react-devtools,那么您将收到此错误,并且它还会在桥上输出一堆消息,抱怨无法打开websocket(如果您使用的话,您将只会看到这些错误)类似于rn-snoopy)。

安装并打开react-devtools后,错误将立即停止。有关如何操作,请参阅以下说明: https://github.com/facebook/react-devtools/blob/master/packages/react-devtools/README.md

答案 3 :(得分:2)

要禁用websocket流,我执行了以下操作:

    xcode中的
  • :Libraries / React.xcodeproj / React / Inspector / RCTInspectorPackagerConnection.m:找到- (void)connect {并在其后添加return;

  • node_modules / react-native / Libraries / Core / Devtools / setupDevtools.js中的
  • :将if (__DEV__)替换为if (false)

这非常难看,但比OS_ACTIVITY解决方案要好得多,因为它不会隐藏或阻止任何其他调试工具。

答案 4 :(得分:0)

在我的情况下,这是由于防火墙应用程序(Little Snitch)从反应原生应用程序运行时从未请求访问。对我有用的步骤:

  • 在模拟器中打开Safari浏览器
  • 访问google.com或任何域
  • 确保它打开页面。它会要求访问等
  • 在模拟器中重启您的应用
  • 重新开始记录react-native log-ios

这应该有所帮助。

答案 5 :(得分:0)

我遇到了同样的问题,并且由于该问题,我的应用程序的启动明显延迟。 here详细介绍了我的实际解决方法,但是如果链接断开,我将对其进行重写:

  1. 打开Xcode
  2. 点击顶部栏中的Product
  3. 单击Scheme,向下滚动到Edit Scheme
  4. 在左侧栏中选择Run,在顶部标签上选择Info
  5. Build ConfigurationDebug更改为Release

现在,该应用不仅不再具有错误,而且启动速度更快。其他“修复”仅隐藏错误。