【问题标题】:Android 'react-native-gesture-handler' errorAndroid 'react-native-gesture-handler' 错误
【发布时间】:2019-11-15 16:32:28
【问题描述】:

当我按照 react-navigation 网站的说明进行操作时: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”取消链接此依赖项,它将自动包含在您的应用程序中。如果库与自动链接不兼容,请忽略此消息并通知库维护者。 我的本机版本: 反应原生 cli:2.0.1 反应原生:0.60.0

但是,当我按照说明取消链接库时 使用:react-native unlink react-native-gesture-handler

应用程序构建成功,但现在它在应用程序中弹出另一个错误: null 不是对象(评估 'rngesturehandlermodule.direction')

我在很多网站上尝试了很多解决方案,比如 undefined is not an object (evaluating 'RNGestureHandlerModule.State'

没有一个对我有用

【问题讨论】:

标签: react-native


【解决方案1】:

你可以做的是,先卸载react-native-gesture-handler。

然后删除IOS和Android文件夹。

然后运行下面的命令。

1.react-native upgrade --legacy true // 恢复ios和android文件夹。

2.npm install 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

【讨论】:

    【解决方案2】:

    看起来这与RN 0.60 中的新自动链接功能有关。

    适用于 iOS

    现在要修复,只需将以下 podspec 用于 RNGesureHandler 添加到 ios/Podfile

    pod 'RNGestureHandler', :podspec => '../node_modules/react-native-gesture-handler/RNGestureHandler.podspec'
    

    然后在ios目录下运行pod install进行安装。

    适用于安卓

    路径: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】:

      你运行的是 react-native run-android 还是 react-native run-ios ?

      【讨论】:

        【解决方案4】:

        我不确定出了什么问题,但很可能是因为 react-native-cli 从低于 0.60.0 升级到高于它。

        BEFORE 0.60.0 运行 react-native run-android 时,该命令将运行 Metro 打包器,同时构建 android 应用程序,然后运行连接到 Metro 打包器的应用程序。

        这就是为什么过去我们只运行一个命令“react-native run-android”来运行项目。

        但是AFTER 0.60.0在运行react-native run-android时,该命令只会构建android-app,并运行app连接metro packager。

        我看到命令提示符闪烁了一次,也可能是启动 Metro 打包器的命令出错,打包器以某种方式自行关闭。

        另外至于react-native link react-native-gesture-handler 的问题,我相信是 react-native 0.60.0 对自动链接库的新特性,因此不再需要手动链接库了。由于许多库提供者可能需要开始提供自动链接功能,或者可能面临同样的错误,而不仅仅是 react-native-gesture-handler。

        临时解决方案,直到有人修复 react-native-cli 以再次运行 Metro 打包程序: 打开 2 个命令提示符而不是 1 个。然后在每个命令提示符处运行以下命令:

        1. react-native start
        2. react-native run-android

        您可能想先运行第一个命令,等待它准备好再运行第二个。

        否则,您的应用可能会变成空白。

        来源:我自己尝试通过创建新项目并运行问题中提到的命令。

        【讨论】:

          猜你喜欢
          • 2022-06-27
          • 1970-01-01
          • 2021-01-03
          • 2023-04-03
          • 1970-01-01
          • 2019-08-16
          • 1970-01-01
          • 2019-12-28
          • 1970-01-01
          相关资源
          最近更新 更多