React Native常见问题汇总(持续更新ing)

http://blog.csdn.net/chichengjunma/article/details/52943013

1.创建新项目,React-native init AwesomeProject命令长时间无响应,或报错shasum check failed

react-native命令行从npm官方源拖代码时会遇上麻烦。请将npm仓库源替换为国内镜像:

npm config set registry https://registry.npm.taobao.org --global

npm config set disturl https://npm.taobao.org/dist --global

另,执行init时切记不要在前面加上sudo

 

 

2.报错:Invariant Violation:Application XXXX has not been registered

确保index.Android.js中的AppRegistry.registerComponent('项目名',() => ...);

与MainActivity.Java中的

mReactRootView.startReactApplication(mReactInstanceManager,"项目名", null);

都保持一致。

 

 

3.IDE选择问题

WebStorm,最新版对JSX、flowtype等语法支持均非常优秀,对于Android Studio熟悉的开发人员建议用WebStorm。

Sublime,插件系统非常强大,因此如果愿意折腾的话,是个非常不错的选择。

另外虽然主要的业务逻辑是使用js开发,但仍然要依赖于原生的编译/调试环境,所以你还需要同时运行Xcode(iOS)或Android Studio(android)等。

 

 

4. could not get batchedbridge, makesure your bundle is packaged correctly

可能是你将之前安装并配置好的apk应用从手机卸载掉,然后重新安装运行,这时候的dev settings 被重置了。

解决方案:运行React-native run-Android或引入到Android Studio中运行,然后摇动手机(Android端),重新配置好IP和端口号,reload

 

 

5.报错:Invariant Violation: Element type is invalid

在ES6语法中,require和export default不能直接配对使用。

所以,你要么把

varHello = require('./components/Hello');

改为import Hello from './components'

要么把export defaultReact.createClass({

改为module.exports =React.createClass({

二者选其一,配对使用。

 

 

6.对于调试时摇晃手机,页面一直显示Please wait… 浏览器调试插件也没反应情况

查看终端代码报错信息,这时的终端进度不显示100%,如下图所示,不要一直等待消耗时间,关掉终端,重启app重新start项目




7.对于替换项目中的图片,终端每次都显示如下图所示Log,好多地儿报乱码

可能是目前React Native还不是特别成熟,还是因为图片名字不换,但是图片本身更换了,会被识别错误。


关闭终端,杀掉app,重新来,目前网上没有查到有关说明,不知道有没有更加快捷的办法



8.利用Navigator集成页面跳转逻辑后不生效或者报错

可能是目前React Native还不是特别成熟,先尝试reload如果不生效关闭终端,重新start项目。



9.适配相关方法

letDimensions = require('Dimensions');

letPixelRatio = require('PixelRatio');

lettotalWidth = Dimensions.get('window').width;

lettotalHeight = Dimensions.get('window').height;

letpixRatio = PixelRatio.get();



10.修改8081默认端口号的两种方式

(1)启动项目时react-native start --port 8083

(2)手动修改项目下的node_modules\react-native\local-cli\server\server.js下的方法server.js文件,如下图所示。



11.invariant violation:expected acomponent class,got[object object]

    创建自定义组件首字母要大写,否则会报错.

 

12.Module 0 is not a registeredcallable module.

    将gradle升级成最新版本cd进入android目录执行:sudo./gradlew clean) 或者通过android studio工具升级.

 

13.android.view.WindowManager$BadTokenException:Unable to add window -- token null is not valid; is your activity running?

    该错误属于安卓Native的错误,如果引用的Activity不存在或者已经销毁,再次引用就会报该错误,如果是React Native 调用原生控件的话,创建控件需要引用:getCurrentActivity()

 

14.android.app.Application cannot becast to com.facebook.React.ReactApplication

    需要将创建的MainApplication在AndroidManifest.xml配置好.

 

15.Element type is invalid: expecteda string (for built-in components) or a class/function but got: object

    发生原生一般是你引用了无效的组件,如果组件确实正确,看下引用的组件是否正常导出:(export defalut)

 

16.react native  undefined is not an object (evaluatingthis....

    发生该错误的一般是忘记bind(this),只要回调函数中需要用到this的,一般都需要bind.

 

17.react native - expected acomponent class, got [object Object]

   该错误可能是你引用了小写的组件,组件首字母一定要大写,比如<login/>应该写成<Login/>


18.Exception in native call from JS

Java.lang.RuntimeException:ReferenceError: Can’t find variable: __fbBatchedBridge

    请检查你的手机或者模拟器是否和你的React Native服务端在同一个局域网内。

 

19.Exception in native call from JS

com.facebook.React.bridge.NativeArgumentsParseException:InteractionManager.pushToArticleDetail got 2 arguments, expected 1

这种类似 com.facebook.react.bridge.NativeArgumentsParseException: *.* got *arguments, expected *往往是在Android和JS通信是产生的错误,检查一下你的接口中的参数,例子提示的是InteractionManager.pushToArticleDetail的参数,JS中有两个,而Android中参数只有一个,所以检查参数,比对上即可。

 

20.com.facebook.react.bridge.NativeArgumentsParseException:TypeError: expected dynamic type string', but had typeobject’ (constructingarguments for InteractionManager.pushToArticleDetail at argument index 0)

类似这种提示,往往是接口中参数类型的不匹配,需要注意的是RN接口中参数和Java参数的对应:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. Boolean-> Bool  
  2. Integer-> Number  
  3. Double-> Number  
  4. Float-> Number  
  5. String-> String  
  6. Callback-> function  
  7. ReadableMap-> Object  
  8. ReadableArray-> Array  





未完待续……


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值