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

App crashes immediately when running on Android device but fine on Android simulator and iOS

应用程序只有在设备上打开时才会立即崩溃。它在 Genymotion 模拟器上运行良好,但当 运行 它在 Note 2 和 galaxy S7 上运行时,它会立即崩溃。 Logcat 显示此错误:

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

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