You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native导入victory-native报Super expression must either be null or a function错误

问题根因

你遇到的Super expression must either be null or a function报错,本质是从victory-native导入的VictoryLegend、VictoryPie组件不是合法的React组件构造对象,最核心的触发原因是victory-native版本和当前项目的React、Expo SDK版本不兼容。

排查步骤
  • 先验证缓存问题:执行expo r -c命令清除Expo所有缓存后重启项目,排查是否是缓存导致的依赖加载异常,如果报错仍存在,确认是版本兼容问题。
  • 缩小问题范围:把导入语句改成仅导入单个组件测试,比如只保留import { VictoryPie } from "victory-native",确认是否是单个组件导出问题还是整个包的兼容问题。
  • 核对依赖版本匹配规则:victory-native从36.x版本开始要求React >=17.0.0,你当前使用的React 16.13.1、Expo SDK42无法适配高版本victory-native,即使是35.3.3版本也存在和Expo SDK42的已知导出兼容缺陷。
解决方案

方案1:降级victory-native到适配版本(优先选择,改动最小)

直接卸载当前版本,安装和Expo SDK42、React 16.13.1完全兼容的34.x稳定版:

npm uninstall victory-native
npm install victory-native@34.3.0

安装完成后再次执行expo r -c清除缓存重启项目即可解决问题。

方案2:升级项目依赖适配高版本victory-native

如果需要使用35.x以上版本victory-native的新功能,可以升级你的Expo SDK版本到44及以上,配套升级React到17.0.1+版本,同时更新react-native-svg到对应Expo版本匹配的版本即可适配。

方案3:临时绕过兼容问题

如果不想修改依赖版本,可以修改导入语句直接从子路径导入组件,绕过根导出的兼容问题:

import VictoryPie from "victory-native/lib/components/victory-pie";
import VictoryLegend from "victory-native/lib/components/victory-legend";

该方法仅适合临时调试使用,不建议长期在生产项目中使用。

内容的提问来源于stack exchange,提问作者Sabbir Hussain Meraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:06:03