React native 尝试注册两个名称相同的视图RNGestureHandlerButton
我尝试从“react navigation”使用{createStackNavigator,createAppContainer}创建导航,但当启动我的应用程序时,我总是收到错误消息 我尝试了很多东西,但没有找到任何关于这方面的文档/帮助 这是我的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
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