react-native ios“无法连接到开发服务器”和“__fbBatchedBridge 未定义”错误

Posted

技术标签:

【中文标题】react-native ios“无法连接到开发服务器”和“__fbBatchedBridge 未定义”错误【英文标题】:react-native ios "Could not connect to development server" and "__fbBatchedBridge is undefined" errors 【发布时间】:2016-06-22 03:01:56 【问题描述】:

我是 react-native 的大一新生。我尝试根据官方文档部署一个“hello world”应用程序。但是失败了。

这是我的尝试:

根据官网安装所有依赖 使用命令react-native init HelloWorld初始化我的本地项目(起初我的项目名称是try,但它是保留关键字,所以我改为HelloWorld) 使用npm install安装所有node_modues 尝试使用命令react-native run-ios 运行我的项目

我的环境是:

osx 10.10.5 守望者4.5 xcode7.2.1 react-native-cli 1.0.0 反应原生0.28.0 反应15.1.0

运行命令react-native run-ios后,我得到这个红色背景错误:

无法连接到开发服务器。

请执行以下操作:

节点服务器正在运行并且在同一网络上可用 - 从 react-native root 运行“npm start” 在 AppDelegate 中正确设置了节点服务器 URL

网址:http://localhost:8081/index.ios.bundle?platform-ios&dev=true

我搜索了谷歌,发现这是一个常见的问题,主要是由于 osx 9.0 的安全策略。

我阅读了github issue: cound not connect to development server 并检查并修改了我的项目:

确保Info.plist 中的NSAppTransportSecurity 设置正常。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

尝试将AppDelegate.m中的jsCodeLocationlocalhost更改为my local network ip(实际上我可以在我的chrome浏览器中访问jsCodeLocation[localhost],但是我根据github问题更改了我的ip不管怎样,试试吧)

当我重试命令“react-native run-ios”时,连接错误消失了,但出现另一个错误“__fbBatchedBridge is undefined”

无法执行 JS 调用:__fbBatchedBridge 未定义

RCTF致命 + 104 ...

我阅读了 github 问题:github-&gt;facebook/react-native/issues/6282,并尝试注释掉以下行 github-&gt;facebook/react-native/blob/master/packager/react-native-xcode.sh#L15-L18

#    if [[ "$PLATFORM_NAME" = "iphonesimulator" ]]; then        
#      echo "Skipping bundling for Simulator platform"      
#      exit 0;      
#    fi

但是什么也没发生。有人可以帮忙吗?谢谢。

【问题讨论】:

您是否尝试过直接从 XCode 运行您的应用程序? 是的,我试过了,但结果和命令“react-native run-ios”一样 你是想在设备还是模拟器上运行它? 模拟器9.2和真机9.2.1都有问题,今晚我试试更多模拟器 【参考方案1】:

您选择的项目名称tryjavascript 中的保留字。这将导致从一开始就出现问题。例如它会生成一个类名try,如下:

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

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

class try 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>
    );
  

这将导致错误和不可预测性。尝试使用 MyApp 之类的东西生成一个新的 react native 应用程序,然后再试一次。

【讨论】:

谢谢你的回答,你很细心,我一开始就遇到这个问题,但后来我自己解决了(我是前端工程师)。所以,不是这个原因。【参考方案2】:

我已经解决了这个问题。

原因很简单,很傻,

只需在hosts中添加localhost 127.0.0.1,问题就会消失。

【讨论】:

以上是关于react-native ios“无法连接到开发服务器”和“__fbBatchedBridge 未定义”错误的主要内容,如果未能解决你的问题,请参考以下文章

React-native:如何从 Windows 构建 ios

React-Native入门指导之iOS篇 —— 一准备工作

react-native android/ios 手动/自动 修改版本号

如何在 react-native 中重置 IOS 文件夹

使用 react-native 创建本地推送通知 - IOS

为啥我不能在 ios 设备上关闭并重新打开 react-native 调试?