我在使用 react-native-gifted-charts (https://www.npmjs.com/package/react-native-gifted-charts/v/1.0.3) 时遇到了标题中提到的错误,导致头痛不已。 图表在 iOS 上运行得非常完美,但在 Android 上却一直崩溃并抛出“Invariant Violation:requireNativeComponent:“RNSVGSvgViewAndroid”在UIManager中找不到。”的错误信息。 起初我以为这是我的代码问题,因为之前它在 Android 上是可以运行的,但即使我颠倒代码也无济于事,错误仍然存在。 我使用 yarn 作为包管理器,并使用 Expo Managed Workflow。 依赖关系如下:
"react-native": "0.70.5",
"react-native-gifted-charts": "^1.2.42",
"react-native-linear-gradient": "2.6.2",
"react-native-svg": "12.1.0",
■我尝试过的事情
- 我删除了节点模块并再次运行了yarn ← 没有起作用
- 根据下面的文章,我改变了react-native-svg的版本,因为有时候这种错误是由于版本不匹配引起的。← 没有起作用 https://github.com/Abhinandan-Kushwaha/react-native-gifted-charts/issues/263
- 我删除了react-native-gifted-charts、react-native-linear-gradient、react-native-svg,并使用yarn重新添加,看看是否解决了问题。← 没有起作用
- 最后,为了确认我的代码不是问题的原因,我删除了所有的代码,并制作了一个简单的barChart示例,看看它是否有效(下面是示例代码)。← 没有起作用
import React, { useState } from "react";
import { View, StyleSheet, Text, TouchableOpacity, ScrollView } from "react-native";
import type { NativeStackScreenProps } from "@react-navigation/native-stack";
import { MainStackParamList } from "../types/navigation";
import dayjs from "dayjs";
import { BarChart, LineChart, PieChart } from "react-native-gifted-charts";
import { useSelector } from "react-redux";
import { RootState } from "../store";
export const StatisticsScreen: React.FC<Props> = () => {
const data=[ {value:50}, {value:80}, {value:90}, {value:70} ]
return (
<BarChart
data={data}
/>
);
};
顺便说一句,我也运行了 yarn cache clean,希望清理缓存能解决问题,但没有起到作用...
react-native-gifted-charts
包含非 Expo SDK 的本地代码,因此不会内置于 Expo Go 中。当 Gifted Charts 的 JavaScript 部分尝试访问本地代码时,由于缺失而失败。您需要创建一个开发构建并使用它来代替 Expo Go。 - Wodin