在 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
一旦我将它们添加回去,它运行良好
应用程序只有在设备上打开时才会立即崩溃。它在 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
一旦我将它们添加回去,它运行良好