美文网首页React-Native
第一个React-Native工程的创建与问题

第一个React-Native工程的创建与问题

作者: FlowYourHeart | 来源:发表于2017-07-05 11:28 被阅读59次

    搭建环境

    目标平台:iOS ,开发平台:macOS

    安装
    必需的软件
    Homebrew: Mac系统的包管理器,用于安装NodeJS和一些其他必需的工具软件。

    终端命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    译注:在Max OS X 10.11(El Capitan)版本中,homebrew在安装软件时可能会碰到/usr/local目录不可写的权限问题。可以使用下面的命令修复:
    sudo chown -R \whoami` /usr/local`

    Node
    使用Homebrew来安装Node.js.
    React Native目前需要NodeJS 5.0或更高版本。本文发布时Homebrew默认安装的是最新版本,一般都满足要求。

    brew install node

    安装完node后建议设置npm镜像以加速后面的过程(或使用科学上网工具)。注意:不要使用cnpm!cnpm安装的模块路径比较奇怪,packager不能正常识别!
    npm config set registry https://registry.npm.taobao.org --global
    npm config set disturl https://npm.taobao.org/dist --global

    Yarn、React Native的命令行工具(react-native-cli)
    Yarn是Facebook提供的替代npm的工具,可以加速node模块的下载。React Native的命令行工具用于执行创建、初始化、更新项目、运行打包服务(packager)等任务。
    npm install -g yarn react-native-cli

    安装完yarn后同理也要设置镜像源:
    yarn config set registry https://registry.npm.taobao.org --global
    yarn config set disturl https://npm.taobao.org/dist --global

    如果你看到EACCES: permission denied
    这样的权限报错,那么请参照上文的homebrew译注,修复/usr/local
    目录的所有权:
    sudo chown -R \whoami` /usr/local`

    Xcode
    React Native目前需要Xcode 8.0 或更高版本。你可以通过App Store或是到Apple开发者官网上下载。这一步骤会同时安装Xcode IDE和Xcode的命令行工具。
    虽然一般来说命令行工具都是默认安装了,但你最好还是启动Xcode,并在Xcode | Preferences | Locations
    菜单中检查一下是否装有某个版本的Command Line Tools
    。Xcode的命令行工具中也包含一些必须的工具,比如git
    等。

    推荐安装的工具
    Watchman
    Watchman是由Facebook提供的监视文件系统变更的工具。安装此工具可以提高开发时的性能(packager可以快速捕捉文件的变化从而实现实时刷新)。
    brew install watchman

    Flow
    Flow是一个静态的JS类型检查工具。译注:你在很多示例中看到的奇奇怪怪的冒号问号,以及方法参数中像类型一样的写法,都是属于这个flow工具的语法。这一语法并不属于ES标准,只是Facebook自家的代码规范。所以新手可以直接跳过(即不需要安装这一工具,也不建议去费力学习flow相关语法)。
    brew install flow

    Nuclide
    Nuclide(此链接需要科学上网)是由Facebook提供的基于atom的集成开发环境,可用于编写、运行调试React Native应用。
    点击这里阅读Nuclide的入门文档
    译注:我们更推荐使用WebStormSublime Text来编写React Native应用。

    测试安装

    react-native init AwesomeProject
    cd AwesomeProject
    react-native run-ios

    一般到这里就算结束了,工程已创建好,但当你用xcode打开工程后你会发现直接报错不能运行

    错误之一

    如果你用的0.45版本 不想换成低版本,那可以尝试解决方法1

    方法一

    解决方法2:init命令默认会创建最新的版本,而目前最新的0.45版本需要下载boost库编译。此库体积庞大,在国内即便翻墙也很难下载成功,导致很多人无法正常运行iOS项目,推荐暂时使用0.44.3
    的版本。
    提示:你可以使用--version
    参数(注意是两
    个杠)创建指定版本的项目。例如react-native init MyApp --version 0.44.3
    。注意版本号必须精确到两个小数点。
    提示:如果run-ios无法正常运行,请使用Xcode运行来查看具体错误(run-ios的报错没有任何具体信息)。

    你也可以在Nuclide中打开AwesomeProject
    文件夹 然后运行,或是双击ios/AwesomeProject.xcodeproj
    文件然后在Xcode中点击Run
    按钮。

    持续问题:
    问题1
    No bundle URL present Make sure you’re running a packager server or have included a .jsbundle file in your application bundle

    No bundel URL.png

    解决方法:
    把此处Mac中用于科学上网的shadowsocks中的网络代理,从 全局代理 改为 自动代理模式

    感觉很奇葩,如果我没有安装shadowsocks呢.png

    问题似乎解决了,因为程序能正常运行了,


    正常运行中.png

    但发现一个问题,控制台一直在刷新

    2017-07-05 12:05:10.397002+0800 MyApp[9191:889561] [] nw_connection_get_connected_socket_block_invoke 660 Connection has no connected handler
    2017-07-05 12:05:12.484239+0800 MyApp[9191:909884] [] nw_connection_get_connected_socket_block_invoke 661 Connection has no connected handler
    2017-07-05 12:05:14.575766+0800 MyApp[9191:999016] [] nw_connection_get_connected_socket_block_invoke 662 Connection has no connected handler
    2017-07-05 12:05:16.663030+0800 MyApp[9191:909884] [] nw_connection_get_connected_socket_block_invoke 663 Connection has no connected handler
    2017-07-05 12:05:18.755125+0800 MyApp[9191:889561] [] nw_connection_get_connected_socket_block_invoke 664 Connection has no connected handler
    

    不停的打印这个log,

    解决办法是:
    1. Xcode menu -> Product -> Edit Scheme...
    2. Environment Variables -> Add -> Name: "OS_ACTIVITY_MODE", Value:"disable"
    3. Run your app again, done! 这样就没问题了
    

    虽然这样能让控制台不在打印这条log,但不能根本解决问题,求大神赐教···

    相关文章

      网友评论

        本文标题:第一个React-Native工程的创建与问题

        本文链接:https://www.haomeiwen.com/subject/fsafhxtx.html