### 报错总结
* * * * *
错误:
* 0.45以上版本运行时报错
* Xcode 8.0 打包报错解
* 同时运行两个项目
* iOS9 & iOS10 HTTP 不能正常使用
* No bundle URL present
* Runtime is not ready for debugging
#### 1. 0.45以上版本运行时报错
刚开始根据文档搭建开发环境,运行react-native run-ios,新创建的项目就报错,挺郁闷的。有以下两种方法:
a. 指定版本创建项目
~~~
react-native init MyApp --version 0.44.3
~~~
b. 配置第三方依赖库(推荐)
配置方法:[iOS RN 0.45以上版本所需的第三方编译库(boost等)](http://reactnative.cn/post/4301)
#### 2. Xcode 8.0 打包报错解
有时候会看到一些优秀项目会down下来看,但是经常会运行不了。因为很多项目时间比较久远,而你用的xcode已经高了好几个版本,就会有一些版本差异的问题。

需要把项目node_module删除,重新npm install一下。然后运行会出现以下新的两个报错

**RCTSRWebSocket.m**中在这两句前面加上(void)
~~~
(void)SecRandomCopyBytes(kSecRandomDefault, keyBytes.length, keyBytes.mutableBytes);
(void)SecRandomCopyBytes(kSecRandomDefault, sizeof(uint32_t), (uint8_t *)mask_key);
~~~
**RCTScrollView.m**中修改如下
~~~
@implementation RCTCustomScrollView
{
__weak UIView *_dockedHeaderView;
RCTRefreshControl *_refreshControl; //加入此行
}
~~~
再运行就OK了。
#### 3. 同时运行两个项目
一般情况下同时运行两个项目是不行的,会报错。如果想要同时运行两个项目,可以修改项目的默认端口号。详见多个app同时运行
#### 4. iOS9 & iOS10 HTTP 不能正常使用
iOS9引入了新特性`App Transport Security (ATS)`
新特性要求App内访问的网络必须使用HTTPS协议。
解决:
a. 在`Info.plist`中添加`NSAppTransportSecurity`类型`Dictionary`。
b. 在`NSAppTransportSecurity`下添加`NSAllowsArbitraryLoads`类型Boolean,值设为`YES`

#### 5. No bundle URL present

~~~
Make sure you’re running a packager server or have included a .jsbundle file in your application bundle
~~~
这个问题其实只是因为你使用了代理,关掉就可以了。
(shadowsocks的)网络代理设置为了全局代理,导致了之前可以正常连接到本地的packager的server,由于全局网络代理,从而需要绕道国外服务器,再去连接本地,所以无法正常访问了。
6. Runtime is not ready for debugging

打开Chrome浏览器debug就会报错,原因还不清楚,暂时重启浏览器可以解决。
