当我按照反应导航网站的指示进行操作时:https://reactnavigation.org/docs/en/getting-started.html。
react-native链接react-native-gesture-handler
,然后按要求更改MainActivity.java。
然后运行react-native run-android,并弹出错误: 错误React Native CLI对本地依赖项使用自动链接,但是以下模块是手动链接的:
react-native-gesture-handler(取消链接运行:“ react-native unlink react-native-gesture-handler”) 当将React Native从0.60以下升级到0.60或以上时,可能会发生这种情况。展望未来,您可以通过“ react-native unlink”取消关联,并且它将自动包含在您的应用程序中。如果库与自动链接不兼容,请忽略此消息并通知库维护者。 我的本机版本: react-native-cli:2.0.1 反应本机:0.60.0
但是,当我按照说明进行操作时,取消链接库 使用:react-native取消链接react-native-gesture-handler
该应用程序已成功构建,但现在在该应用程序中弹出另一个错误: null不是对象(正在评估“ rngesturehandlermodule.direction”)
我在很多网站上尝试了很多解决方案,例如 undefined is not an object (evaluating 'RNGestureHandlerModule.State'
没有一个为我工作
答案 0 :(得分:0)
我不确定出了什么问题,但是很可能是因为react-native-cli从0.60.0以下升级到了其之上。
0.60.0之前的版本,当运行react-native run-android时,该命令将运行Metro打包程序,以及构建android应用程序,然后运行连接到Metro打包程序的应用程序。
这就是为什么在过去,我们只运行一个命令“ react-native run-android” 来运行项目的原因。
但是 0.60.0之后,当运行react-native run-android时,该命令将仅构建android-app,并运行该应用以连接到Metro包装程序。
我看到一个命令提示符闪烁一次,这也可能是启动Metro包装程序的命令出错并且包装程序以某种方式自行关闭的原因。
关于react-native link react-native-gesture-handler
的问题,也我相信这是react-native 0.60.0到自动链接库的新功能,因此不再需要手动链接库。许多图书馆提供者可能需要开始提供自动链接功能,或者可能会遇到相同的错误,而不仅仅是react-native-gesture-handler。
临时解决方案,直到有人修复了react-native-cli以再次运行Metro包装程序: 打开2命令提示符,而不是1。然后在每个命令提示符下运行以下命令:
react-native start
react-native run-android
您可能想先运行第一个命令,然后等待其准备好再运行第二个命令。
否则,您的应用程序可能变成空白。
源:我通过创建新项目并运行问题所提到的命令来亲自尝试。
答案 1 :(得分:0)
您运行了react-native run-android还是react-native run-ios吗?
答案 2 :(得分:0)
这似乎与RN 0.60
中新的自动链接功能有关。
对于iOS
要立即修复,只需将以下用于RNGesureHandler的podspec添加到ios / Podfile
pod 'RNGestureHandler', :podspec => '../node_modules/react-native-gesture-handler/RNGestureHandler.podspec'
然后在ios目录中运行pod install
进行安装。
对于Android
路径:android/app/src/main/java/com/projectname/MainApplication.java
import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
....
protected List<ReactPackage> getPackages() {
// Add additional packages you require here
// No need to add RnnPackage and MainReactPackage
return Arrays.<ReactPackage>asList(
....
new RNGestureHandlerPackage()
);
}
祝你有美好的一天。
答案 3 :(得分:0)
您可以做的是,首先卸载react-native-gesture-handler。
然后删除IOS和Android文件夹。
然后运行以下命令。
1.react-native upgrade --legacy true //恢复ios和android文件夹。
2.npm安装react-native-gesture-handler
3.react-native链接
4.react-native run-android
5.react-native run-ios
还更新您的MainActivity.java文件,请访问官方网站:
https://kmagiera.github.io/react-native-gesture-handler/docs/getting-started.html