只有在设备上打开时,应用程序才会立即崩溃。它在Genymotion模拟器上运行良好,但是当在Note 2和Galaxy S7上运行它时,它会立即崩溃。日志猫显示此错误:
com.facebook.react.common.JavascriptException: addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component's
渲染method, or you have multiple copies of React loaded
我已经删除了 MainApplication.java
中的所有重复导入,我尝试将 react 升级到 0.40、运行 watchman watch-del-all
、删除 node_modules
文件夹并运行 npm cache clean
但似乎没有任何帮助
编辑
这是我的package.json
:
"name": "DineSafe",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"parse": "1.9",
"parse-react": "^0.5.2",
"react": "15.4.0",
"react-native": "^0.40.0",
"react-native-animatable": "^1.1.0",
"react-native-cacheable-image": "^1.4.3",
"react-native-global-props": "^1.0.7",
"react-native-image-crop-picker": "^0.11.1",
"react-native-keyboard-spacer": "^0.3.1",
"react-native-progress": "^3.1.0",
"react-native-svg": "4.4.0",
"react-native-triangle": "0.0.6"
},
"jest": {
"preset": "jest-react-native"
},
"devDependencies": {
"babel-jest": "17.0.2",
"babel-preset-react-native": "1.9.0",
"jest": "17.0.3",
"jest-react-native": "17.0.3",
"react-test-renderer": "15.3.2"
}
我从你的问题根源上得到了它。有时,当您安装第三方应用程序时,这些第三方应用程序会在您的项目中重新安装反应,并且这些重复版本会导致此错误。
根据您的package.json
您正在实现一些在模拟器或模拟器中运行良好的库,但在设备上运行应用程序时崩溃。
解决方案:转到您安装的每个第三方APP的node_module
文件夹,然后搜索react。之后,使用 npm uninstall lib_name
命令删除该库并运行项目。
就我而言,我不小心删除了我的com/.../MainActivity.java&com/.../MainApplication.java :D
一旦我将它们添加回来,它运行良好
我通过创建一个新项目并将所有文件复制到其中来让它工作。