ReactNative(二)

记录下经历过的一些坑,各种大坑小坑和暗坑吧。。。

1.引用库失败

引用一个库的常规操作如下:

yarn add 库名
react-native link 库名

偶然一次在项目里引用一个原生库,失败了,再次尝试又失败了,屡试无果,顿觉诡异,于是只好尝试手动引用,试了好几次才成功,还是抿嘴强忍了。原来手动搞也是需要技巧和姿势的,特此记录下来:

先说下,在用终端命令执行自动引用失败后,不要急着开始手动搞,要先刷锅,把锅洗干净后再做饭,才不会受上一顿余味的影响,刷锅操作如下:

yarn remove 库名
react-native unlink 库名
接着,搜索 project.pbxproj 文件中引用失败的库的相关信息并删除

将 XGPhoto.xcodeproj 文件拖动到目标文件夹 Libraries 中,接着:停止,关闭,退出Xcode,再点击Xcode,选择刚才的项目工程并打开,这时就会发现目标库的文件结构正常了(如果还是单层的,那就重复操作一遍),然后在 Xcode 中的Build Phases/Link Binary With Libraries 中将目标库添加进来,运行Xcode就OK了!

自动不行,只能手动了。。。

不过手动添加有一个暗坑:手动添加过的库,在某次自动添加其他库或者更新整个工程库目录后会被冲掉,Xcode中会出现红色,遇到这种只好重新手动搞一次之前的库了!!!暂时还不知道有啥好的解决方案。。。

说一下如果没有完成库的添加会发生什么样的错误

TypeError:undefined is not an object(evaluating ‘RCTCameraRollManager.getPhotos’)

类似的错误的意思就是:你所用到的对象没有定义,也就是没找到,所以肯定是库的引用出问题了

2.版本不匹配

React Native version mismatch.

JavaScript version: 0.51.0

Native version: 0.49.5

根据错误提示是因为项目中RN版本过低导致

解决方法:更新项目中的RN版本至最新版本。

执行如下命令:

npm install --save react-native@0.51.0

版本不同,构建的项目模板也会发生变化,所以在更新了React Native版本之后,也要及时更新项目模板。

通过如下命令:

react-native upgrade

做完这两个操作之后,还要做 npm install 和 yarn install 操作。

3.新建RN项目运行报错:”Failed to load bundle(http://localhost:8081/index.bundle?platform=ios&dev=true.../Users/xxx/xxx/node_modules/babel-preset-react-native/index.js)(null)"

这算是RN自身的一个Bug吧,RN自身版本与依赖库”babel-preset-react-native”的版本不兼容的原因,将版本号降低点就没问题了。将工程中package.json文件中的devDependencies中的相关版本号都降低点就行,可以用已有的其他项目的该文件替换一下就行。如下图:


这里提示一下:可能会报”npm ERR! Failed to parse json”的错误,那就是降注释部分删除,这里只是为了做对比展示,可能加了注释后,json文件解析不出来了吧,这点还是很坑的。

4.遇到过这样的情况,过一段时间再跑项目,由于期间私有npm库的升级导致运行失败,在执行完 npm install 和 yarn install 后,工程是跑起来了,但Xcode会报红色错误,查看报错对象就是这些私有库,但仍然能运行。。。直接执行 pod install 就可以,红色消失,看着就很顺眼了。