React Native 开发中遇到的问题

1:当在项目目录下运行Flow命令报错:
       Wrong version of Flow. The config specifies version ^0.45.0 but this is version 0.49.0 Could not start Flow       server!
       解决办法:
      运行如下命令:  npm install [email protected] -g
2:  运行Androd版本时遇到
      SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME 
      environment  variable.
     
      解决办法:
      设置Android sdk 环境变量:
      方法一:
      $ cd (进入用户登陆目录)
      $ ls –al .bash_profile(.bash_profile为隐藏文件,因此要用ls –a命令查找)
      $vi .bash_profile(用vi编辑.bash_profile)
      方法二:
      $ cd (进入用户登陆目录)
      $ touch .bash_profile  
      $open -e .bash_profile 
      将Android sdk设置加入  .bash_profile 中:
      export ANDROID_HOME=/Users/scofield/Library/Developer/Xamarin/android-sdk-macosx/
      export PATH=${PATH}:${ANDROID_HOME}/tools
      export PATH=${PATH}:${ANDROID_HOME}/platform-tools
      验证是否配置成功:
      运行adb -version命令
      Android Debug Bridge version 1.0.31  
      运行 $android
      会打开Android SDK Manager窗口
3:运行run命令时报:
       Packager can't listen on port 8081
      解决办法:
      首先找出哪些应用在使用8081端口
      运行命令: lsof  -i :8081
      删除相关进程:kill pid
4: React-Native到0.44版本后Navigator 不能用的问题
      Navigator is deprecated and has been removed from this package. It can now be installed and imported from react-native-deprecated-custom-components instead of react-native. Learn about alternative navigation solutions at  http://facebook.github.io/react-native/docs/navigation.html
      解决办法:
     1.在项目根目录下运行如下命令:
          npm install react-native-deprecated-custom-components --save
     2:在js文件中加入
          import NavigationExperimental from 'react-native-deprecated-custom-components';
          并将 NavigationExperimental.Navigator替换Navigator
5: Android NDK 下载后的bin文件Mac下解压方法:
       1.获取文件权限
            chmod a+x android-ndk-r10c-darwin-x86_64.bin
       2. 解压出文件

            ./android-ndk-r10c-darwin-x86_64.bin    

6:在调用this.setState()方法时报  undefined is not a function ( evaluating setState)

   需要将点击事件方法申明 this.onPress = this.onPress.bind(this);或者在点击事件中写成

   onPress={this.onPress.bind(this)}

7:在start packager时出现:Packager cann't listen on port 8081

   是由于之前启动的Packager还在运行,所以需要关闭它。

   首先查看哪些进程在占用8081端口

   lsof -i :8081

   然后shut down the other process

   kill -9 PID

Packager can't listen on port 8081
React Native Packager
3:32:03 PM
Most likely another process is already using this port
React Native Packager
3:32:03 PM
Run the following command to find out which process:
React Native Packager
3:32:03 PM
   lsof -i :8081 
React Native Packager
3:32:03 PM
Then, you can either shut down the other process:
React Native Packager
3:32:03 PM
   kill -9 <PID>

8: 运行程序时,遇到异常如下异常:

    React Native 开发中遇到的问题

    一般有两种情况:

      (1)not register it in index.android.js / index.ios.js or name is wrong

                default class Test extends Component
                AppRegistry.registerComponent('Test', () => Test); 

        (2)  打开了多个终端,都在运行同个App. 需要按照问题七的方法去kill掉其他的进程

9: IOS真机测试运行的时候遇到如下问题:

React Native 开发中遇到的问题

1.mac电脑设置了防火墙 ------解决方案,在系统设置里关闭防火墙
2.node或者npm的版本有问题------解决方案,全部更新至最新的版本

3:Mac的IP地址会自动变动

    解决方案,将jsCodeLocation做相应的调整,jsCodeLocation = [NSURL URLWithString:@"http://192.168.206.27:8081/index.ios.bundle?platform=ios&dev=true"];

4:还有一个就是iOS9的网络访问问题

   解决方案,Xcode项目的plist文件里已经有App Transport Security Settings,关键是默认的设置是只允许localhost访问不允许别的访问,那么就得修改下这儿

  React Native 开发中遇到的问题

10:iOS真机运行时报如下错误:

    React Native 开发中遇到的问题

    是由于Identification.h文件没有相应的.m文件。

11: 导入第三方库在import时会出现如下错误:

      Lexical or Preprocessor Issue 'xxx.h' file not found    

     网上各种方法都尝试了还是不行,最后直接把第三方库拖入Library中解决问题,如下:

     React Native 开发中遇到的问题