不变违规:“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.javaimport com.horcrux.svg.SvgPackage; 与其他导入一起添加到顶部 将new SvgPackage()与列表中的其他getPackages()一起添加(~第30行)

【讨论】:

以上是关于不变违规:“RNSVGSvgView”的本机组件不存在的主要内容,如果未能解决你的问题,请参考以下文章

不变违规:不变违规:尝试从未标记为“本机”的节点获取本机标记 - 反应导航更新导致崩溃

不变违规:元素类型无效:预期为字符串(用于内置组件)

不变违规:本机模块不能为空。错误仅显示在 iOS 上

不变违规:本机模块不能为空。 React Native Firebase 应用程序

不变违规:此导航器缺少导航道具

不变违规:组件`div`的视图配置getter回调必须是一个函数(收到`undefined`)