在Android设备上运行时,应用程序会立即崩溃,但在Android模拟器和iOS上很好



只有在设备上打开时,应用程序才会立即崩溃。它在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

一旦我将它们添加回来,它运行良好

我通过创建一个新项目并将所有文件复制到其中来让它工作。

最新更新