React native 尝试注册两个名称相同的视图RNGestureHandlerButton

React native 尝试注册两个名称相同的视图RNGestureHandlerButton,react-native,React Native,我尝试从“react navigation”使用{createStackNavigator,createAppContainer}创建导航,但当启动我的应用程序时,我总是收到错误消息 我尝试了很多东西,但没有找到任何关于这方面的文档/帮助 这是我的package.json { "main": "node_modules/expo/AppEntry.js", "scripts": { "start": "expo start", "android": "expo s

我尝试从“react navigation”使用{createStackNavigator,createAppContainer}创建导航,但当启动我的应用程序时,我总是收到错误消息

我尝试了很多东西,但没有找到任何关于这方面的文档/帮助

这是我的
package.json

{ 
  "main": "node_modules/expo/AppEntry.js", 
  "scripts": { 
    "start": "expo start", 
    "android": "expo start --android", 
    "ios": "expo start --ios", 
    "eject": "expo eject" 
    }, 
  "dependencies": { 
    "expo": "^32.0.0", 
    "react": "16.5.0", 
    "react-native": "github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
     "react-native-gesture-handler": "^1.0.15", 
    "react-navigation": "^3.0.9" 
    }, 
  "devDependencies": { 
    "babel-preset-expo": "^5.0.0" 
    }, 
  "private": true 
}
注意:这个答案是为世博会v33而写的。请查阅当前的react导航文档和您正在使用的Expo版本,以获取最新的安装说明

出现错误的原因是您在Expo应用程序中使用了
react导航
,但是您没有正确地遵循教程

如果您阅读了说明,它会告诉您,一旦安装了
react导航
,您就应该安装
react native手势处理程序
。然而,他们不是这么说的

接下来,安装react本机手势处理程序。如果你在使用Expo,你 这里不需要做任何事情,它包含在SDK中

它表示,如果您使用的是
Expo
,则不需要安装
react native手势处理程序,因为它已经安装

您会收到错误,因为您已经安装了
react native手势处理程序
,它已经存在于Expo中,Expo对从何处获取信息感到困惑

要解决您的问题,请执行以下操作

  • 关闭正在运行的所有终端
    Expo
  • 关闭正在运行的浏览器窗口
    Expo
  • 从设备上的
    Expo
    应用程序中清除您正在处理的项目
  • 删除您的
    包锁.json
  • 删除您的
    节点\u模块
    文件夹
  • 包.json中删除
    react原生手势处理程序
  • 运行
    npm i
  • 重新启动
    Expo
    使用
    Expo start-c

  • 使用
    Expo
    时要小心,很容易安装无法与之一起运行的依赖项,并导致您自己出现类似的问题。

    对于我来说,这个问题有时甚至比额外手动安装
    react native手势处理程序要微妙一些:,我发现我最近更新的一个包包含了他们自己的
    react native手势处理程序的副本作为依赖项(通过搜索我的
    warn.lock
    package lock.json
    节点单元
    等找到)-因此,我不得不将该软件包降级为一个不依赖于
    react native手势处理程序的版本。

    对于在这里搜索的任何其他人:
    无法从“节点”解析“反应本机手势处理程序”_modules@react-导航\native\src\Scrollables.js”“

    我在这里找到了答案:

    如果您使用的是Expo SDK 34+,不管旧线程怎么说,您都需要运行以下命令才能正常工作:

    expo-install-react-native手势处理程序

    ,所以我使用的是expo-SDK32,也有同样的问题

    我试过:

  • rm-rf节点\u模块和npm安装
    运气不佳
  • 从您的
    包.json中删除
    react原生手势处理程序
    ,然后执行
    rm-rf node_模块和&npm安装
  • 我成功地确保了我的
    react native手势处理程序
    版本只允许在semver中进行补丁更改

    old package.json行(发生名称冲突错误时):

    “反应本机手势处理程序”:“^1.0.12”,

    (此处的
    ^
    告诉npm跳到最高次要版本,该版本已安装
    1.4.1

    new package.json行(为我修复了错误):

    “反应本机手势处理程序”:“~1.0.12”,

    (这里的
    ~
    告诉npm只升级安装了
    1.0.17
    的最高补丁版本,错误消失了)

    我假设发生了某种碰撞,有不同的小版本


    我想这就是我没有使用expo的原因,我也有同样的问题。我通过进入我的“package lock.json”文件并找到“react native signature handler”来修复它,并删除了整个包含依赖项的包。 在此之后,在node_模块文件夹中,我删除了名为“react native手势处理程序”的文件夹。 现在,npm安装react本机手势处理程序
    为我工作。

    如果您没有使用expo并看到此错误,那么您可能正在使用返回可触摸不透明度的组件。您可能会遇到相同的错误,并且还会发生多个脚本绑定。要修复将TouchableOpacity包装在视图中的问题,如果您使用Expo构建react native应用程序,则无需从npm或Thread导入react native手势处理程序。它已经在世博会的包装中。如果导入软件包,您将遇到此错误。

    对于非Expo应用程序,上述解决方案确实有效。 因此,对于ANDROID Studio制作的react本机应用程序,以下是解决方案:-

    • 将您的react本机链接的依赖项版本替换为 当前最新版本为2.1.1,该版本出现此错误, 将其替换为此链接- "https://github.com/xcarpentier/react-native-linkedin.git“连同 所需的更改
    • 删除并重新安装节点单元模块
    • 安装后,从中删除WEBVIEW文件夹 手动在节点_模块中“react native linked”或在下面写入 在package.json文件中的脚本行:
      “postinstall”:“npx-jetifier;补丁包;rm-rf./node_模块/react native linkedin/node_模块/react native webview”,
      在“开始”键之后

    你能发布你的
    包.json吗?{“main”:“n