不变违规:“RNSVGSvgView”的本机组件不存在

问题描述 投票:0回答:6

经过几天在互联网上的研究,我仍然没有解决我的问题。 我正在使用react-native-svg并且遇到同样的问题: No component found for view with the name

或者这个: Invariant Violation: Native component for

我尝试了很多事情,包括:

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 构建它,但仍然没有任何结果...

谢谢大家的帮助!

ios svg react-native react-native-ios
6个回答
11
投票

你应该尝试这样做:

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中的链接框架和库中

然后...多田


5
投票

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

1
投票

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


0
投票

Svg 版本有问题

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

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

0
投票

我也遇到了同样的问题,但是是在 Android 上。

因此,如果您处于相同的条件下,这里有一些解决方法,问题专门发生在 MainApplication 上,所以您想看看:

  • 打开
    android/app/src/java/com/*/MainApplication.java
  • 在其他导入的顶部添加
    import com.horcrux.svg.SvgPackage;
  • 沿着列表中的其他内容添加
    new SvgPackage()
    getPackages()
    (~第 30 行左右)

0
投票

我在类似的事情上遇到了巨大的问题,经过大量调查后,意识到问题仅仅是由于嵌套在 .当我把它包裹起来时,我的错误就全部消失了。不确定这是否有帮助,但认为偶尔值得一提。

© www.soinside.com 2019 - 2024. All rights reserved.