不变违规:“RNSVGSvgView”的本机组件不存在
Posted
技术标签:
【中文标题】不变违规:“RNSVGSvgView”的本机组件不存在【英文标题】:Invariant Violation: Native component for "RNSVGSvgView" does not exist 【发布时间】:2017-12-06 11:11:31 【问题描述】:经过几天的互联网研究,我仍然没有解决我的问题。 我正在使用 react-native-svg 并且我遇到了同样的问题: No component found for view with the name "RNSVGPath"
或者这个: Invariant Violation: Native component for "RNSVGSvgView" does not exist
我尝试了很多东西,包括:
react-native unlink react-native-svg
npm uninstall react-native-svg
npm install react-native-svg
react-native link react-native-svg
react-native run-ios
还有:
pod 'RNSVG', :path => '../node_modules/react-native-svg'
rm -rf node_modules
npm install
react-native run-ios
但还是没有... 这是我正在使用的版本:
"dependencies":
"react": "16.1.1",
"react-native": "0.50.3",
"react-native-svg": "^6.0.1-rc.1"
我尝试直接从 XCode 构建它,但仍然没有...
感谢你们的帮助!
【问题讨论】:
【参考方案1】:你应该尝试这样做:
npm install react-native-svg --save //(again)
react-native link react-native-svg //(again)
watchman watch-del-all
rm -rf node_modules/ && yarn cache clean && yarn install
然后在另一个终端
npm start -- --reset-cache
在使用 react-native run-ios 启动您的 ios 应用程序之前,您必须手动将 libRNSVG.a 添加到 Xcode 中的链接框架和库中
然后……多田
【讨论】:
对于 android 它可以工作,但对于 ios,不幸的是,没有【参考方案2】:SVG 问题,我也塞了 4 个小时,得到了解决方案。
自动链接:
react-native link react-native-svg
不能自动工作,然后手动进行。
手动链接:
1 将以下行追加到android/settings.gradle:
include ':react-native-svg'
project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android')
2 在 android/app/build.gradle:
的依赖块内插入以下行
implementation project(':react-native-svg')
3 打开`android/app/src/main/java/[...]/MainApplication.java
将import com.horcrux.svg.SvgPackage;
添加到文件顶部的导入中。
将new SvgPackage()
添加到getPackages()
方法返回的列表中。如果前一项已经有内容,请在前一项中添加逗号。
【讨论】:
【参考方案3】:我遇到了这个问题,因为从 RN 0.51 开始,“react-native 链接”就被破坏了。完全删除并重新安装后手动链接修复它在 iOS 上。
【讨论】:
【参考方案4】:Svg 版本有问题
首先,取消链接 svg,然后删除 svg 的 npm,然后安装新的
"dependencies":
"react": "16.1.1",
"react-native": "0.44.0",
"react-native-svg": "5.1.8"
【讨论】:
感谢您的回复!问题是我们刚刚升级到 react-native 0.50.3 并且不想回到旧版本。还有其他解决方案吗? 其实 svg 包有一个依赖列表列出了支持版本的 react native 遍历文档【参考方案5】:我遇到了同样的问题,但在 Android 上。
所以,如果你处于相同的情况,这里有一些东西可以解决它,这个问题专门发生在 MainApplication 上,所以你想看看:
打开android/app/src/java/com/*/MainApplication.java
将import com.horcrux.svg.SvgPackage;
与其他导入一起添加到顶部
将new SvgPackage()
与列表中的其他getPackages()
一起添加(~第30行)
【讨论】:
以上是关于不变违规:“RNSVGSvgView”的本机组件不存在的主要内容,如果未能解决你的问题,请参考以下文章
不变违规:不变违规:尝试从未标记为“本机”的节点获取本机标记 - 反应导航更新导致崩溃