React Native 错误 - 不变违规:ART 已从 React Native 中删除

Posted

技术标签:

【中文标题】React Native 错误 - 不变违规:ART 已从 React Native 中删除【英文标题】:React Naitve Error - Invariant Violation: ART has been removed from React Native 【发布时间】:2020-06-03 11:59:02 【问题描述】:

ART 是从 react-native-progress 模块中的“react-native”导入的。

import  Animated, ART, StyleSheet, View  from 'react-native';

我更新了模块,现在它从@react-native-community/art 导入。

import  Surface as ARTSurface  from '@react-native-community/art';

ART 没有在其他任何地方的项目中使用,但我仍然面临同样的错误。 知道有什么问题吗?

错误信息: Invariant Violation:ART 已从 React Native 中移除。现在可以从“@react-native-community/art”而不是“react-native”安装和导入它。见https://github.com/react-native-community/art。

Screenshot of the error.

【问题讨论】:

【参考方案1】:

通过查看您的堆栈跟踪,您正在使用 react-native-progress,这是它​​的内部依赖项,这就是您面临此问题的原因。

根据 react-native-progress 的文档。

https://github.com/oblador/react-native-progress/blob/master/README.md#reactart-based-components

因此,根据文档,您也可以将其删除以修复此错误。

Note: If you don't want the ReactART based components and it's dependencies, do a deep require instead: import ProgressBar from 'react-native-progress/Bar';.

因此,您可以避免使用这些基于ART 的组件,或者尝试如下修复。

in file Circle.js, CircleSnail.js , Pie.js,
replace ART.Surface with
import Surface from '@react-native-community/art';
and in file Shapes/Arc.js
import Shape, Path from '@react-native-community/art';
and replace the same above.

【讨论】:

【参考方案2】:

任何依赖 ART 的包都会给你带来问题,不仅是 react-native-progress ,还有像这样的加载器的包 react-native-loading-spinner-overlay , 您可以通过修复导入找到另一个包来更改此设置

自 SDK 36 起,Art 库已被删除, 如果需要使用依赖于ART的react-native-progress,可以使用裸工作流并安装@react-native-community/art,或者使用Svg实现自己的进度指示器

【讨论】:

以上是关于React Native 错误 - 不变违规:ART 已从 React Native 中删除的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义输入组件时的 React-Native 不变违规

使用 react-redux 与 react-native 连接时的不变违规

不变违规:元素类型在 createMaterialTopTabNavigator()/MaterialTopTabView 渲染方法中无效,React Native w/React Navigatio

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

尝试使用自定义图标创建 TabBarIOS 时出现不变违规错误

不变违规:requireNativeComponent:在 UIManager 中找不到“AIRMap”。没有修复?