不变违规:“RNSVGSvgView”的原生组件不存在

时间:2017-12-06 11:11:32

标签: ios svg react-native react-native-ios

经过几天的互联网研究,我还没有解决我的问题。 我正在使用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构建它,但仍然没有......

感谢您的帮助!

5 个答案:

答案 0 :(得分:7)

你应该尝试这样做:

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中的Linked Frameworks和Libraries

然后...... Tada

答案 1 :(得分:4)

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()方法返回的列表中。如果已有内容,请在前一项中添加逗号。

答案 2 :(得分:1)

我遇到了这个问题,因为从RN 0.51开始,“react-native link”被破坏了。完全删除后手动链接并重新安装在iOS上修复。

答案 3 :(得分:0)

Svg版本

有问题

首先,取消链接svg然后删除svg的npm然后安装新的

"dependencies": {
    "react": "16.1.1",
    "react-native": "0.44.0",
    "react-native-svg": "5.1.8"
}

答案 4 :(得分:0)

我有同样的问题,但是在Android上。

因此,如果您在相同的条件下,可以解决此问题,那么该问题专门发生在MainApplication上,因此您需要查看:

  • 打开android/app/src/java/com/*/MainApplication.java
  • 在其他进口商品的前面加上import com.horcrux.svg.SvgPackage;
  • new SvgPackage()与列表getPackages()中的其他字符一起添加(〜30行)