5

最近,我们将react native集成到我们的应用程序中,只需简单的文本视图。我们在所有类型的设备上都遇到了这种崩溃。

致命异常:com.facebook.react.bridge。JSApplicationIllegalArgumentException:更新RCTView类型的阴影节点中的属性“flex”时出错在com.facebook.react.uimanager上。ViewManagersPropertyCache$PropSetter.updateShadowNodeProp(ViewManagers属性缓存.java:109)在com.facebook.react.uimanager上。ViewManagerPropertyUpdater$FallbackShadowNodeSetter.setProperty(ViewManager属性更新器.java:148)在com.facebook.react.uimanager上。ViewManagerPropertyUpdater.updateProps(ViewManager属性更新器.java:52)在com.facebook.react.uimanager上。ReactShadowNode.updateProperties(ReactShadowNode.java:222)在com.facebook.react.uimanager上。UIImplementation.createView(UIImplement.java:177)在com.facebook.react.uimanager上。UIManagerModule.createView(UIManagerModule.java:222)位于java.lang.reflect。调用方法(Method.java)在com.facebook.react.bridge上。BaseJavaModule$JavaMethod.invoke(BaseJavaModule.java:318)访问com.facebook.react.cxxbridge。调用(JavaModuleWrapper.java:158)在com.facebook.react.bridge.queue上。run(NativeRunnable.java)在android.os上。Handler.handleCallback(Handler.java:739)在android.os上。Handler.dispatchMessage(Handler.java:95)在com.facebook.react.bridge.cqueue上。消息队列线程处理程序.dispatchMessage(MessageQueueThreadHandler.java:31)在android.os上。Looper.loop(Looper.java:234)在com.facebook.react.bridge.queue上。MessageQueueThreadImpl$3.run(MessageQueue线程Impl.java:196)位于java.lang.Thread.run(Thread.java:818)由java.lang.IllegalArgumentException引起:方法com.facebook.react.uimanager。LayoutShadowNode.setFlex参数1的类型为float,得到java.lang.String位于java.lang.reflect。调用方法(Method.java)在com.facebook.react.uimanager上。ViewManagersPropertyCache$PropSetter.updateShadowNodeProp(ViewManagers属性缓存.java:99)在com.facebook.react.uimanager上。ViewManagerPropertyUpdater$FallbackShadowNodeSetter.setProperty(ViewManager属性更新器.java:148)在com.facebook.react.uimanager上。ViewManagerPropertyUpdater.updateProps(ViewManager属性更新器.java:52)在com.facebook.react.uimanager上。ReactShadowNode.updateProperties(ReactShadowNode.java:222)在com.facebook.react.uimanager上。UIImplementation.createView(UIImplement.java:177)在com.facebook.react.uimanager上。UIManagerModule.createView(UIManagerModule.java:222)位于java.lang.reflect。调用方法(Method.java)在com.facebook.react.bridge上。BaseJavaModule$JavaMethod.invoke(BaseJavaModule.java:318)访问com.facebook.react.cxxbridge。调用(JavaModuleWrapper.java:158)在com.facebook.react.bridge.queue上。run(NativeRunnable.java)在android.os上。Handler.handleCallback(Handler.java:739)在android.os上。Handler.dispatchMessage(Handler.java:95)在com.facebook.react.bridge.queue上。消息队列线程处理程序.dispatchMessage(MessageQueueThreadHandler.java:31)在android.os。Looper.loop(Looper.java:234)在com.facebook.react.bridge.queue上。MessageQueueThreadImpl$3.run(MessageQueue线程Impl.java:196)位于java.lang.Thread.run(Thread.java:818)

我们用React Native显示简单文本

'使用严格';从“React”导入React;导入{应用程序注册表,样式表,文本,查看}来自“react-native”;类HelloWorld扩展了React。组件{渲染(){返回(React Native正在运行)}}AppRegistry.registerComponent('8fit',()=>HelloWorld);

我们使用React Native0.35.0卢比但稳定版本也出现了同样的崩溃0.33.1.

你可以在这里找到完整的车祸报告。https://gist.github.com/sealskej/1e2398ef1cd9dda2d1b2630348fa612a

如能帮助解决问题,我们将不胜感激!

6
  • 嘿,你能用上面的代码重现这个问题吗?我尝试了相同的代码,但没有崩溃。
    – 杰克森
    评论 2016年10月19日5:21
  • 如果您使用flex关键字,请检查您的react原生代码库,并且该值是字符串。Error明确指定传递的是字符串值,而不是float类型。
    – 杰克森
    评论 2016年10月19日6:03
  • 你说过整合,所以它不是一个纯React Native项目,对吗?代码看起来不错,可能是安装错误。检查你的设置部分,你可能会发现一些东西。
    – 剑客
    评论 2016年10月19日9:50
  • @我无法重现这个问题。我只是看到一些用户随机出现这种情况。 评论 2016年10月19日10:56
  • @Jickson不,我们根本没有在js文件中使用flex关键字。 评论 2016年10月19日10:57

2个答案2

重置为默认值
2

我不明白为什么这不起作用,但也许一个解决方案是将其封装在查看并设置的值弯曲那里。例如:

渲染(){返回(<视图样式={{flex:1}>React Native正在运行</视图>)}
1
  • 我试试看。 评论 2016年10月19日10:59
1

使用的package.json文件中的react版本可能与apk中使用的sdk版本不同。

这可以每次都给出IllegalArgumentException。

1
  • 我使用maven{url“$rootDir/node_modules/react-native/android”}编译“com.facebook.react:react-native:+”,这应确保反应本机版本在npm安装没有? 评论 2016年10月19日12:20

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.