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

Expo项目使用react-native-snap-carousel遇TypeError错误求助

问题原因

react-native-snap-carousel 早已停止维护,它内部使用了 React.PropTypes.array 这类写法,但从 React 16.14.0 开始,PropTypes 被单独拆分到了 prop-types 包中,现代 Expo/React Native 环境里不再从 react 导出 PropTypes,所以会抛出“Cannot read property 'array' of undefined”的错误。

解决方法

1. 替换为活跃维护的轮播库(推荐)

这个旧库多年没更新,适配性差,直接换用以下主流替代库:

  • react-native-reanimated-carousel:基于 Reanimated 2,性能拉满,完美适配最新 Expo 版本
  • react-native-swiper-flatlist:轻量易用,继承 FlatList 特性,兼容性好

以安装 react-native-reanimated-carousel 为例,Expo 环境直接执行:

npx expo install react-native-reanimated-carousel react-native-reanimated

2. 手动修复旧库的 PropTypes 引用(仅临时场景用)

如果必须继续用这个旧库,按以下步骤操作:

  • 先安装单独的 prop-types 包:
    npx expo install prop-types
    
  • 用 patch-package 工具修改库代码:
    1. 安装工具:
      npm install patch-package --save-dev
      
    2. 找到 node_modules/react-native-snap-carousel/src 下的相关文件,把所有 import { PropTypes } from 'react' 改成 import PropTypes from 'prop-types'
    3. 生成补丁文件:
      npx patch-package react-native-snap-carousel
      
    4. 在 package.json 的 scripts 里加一行:
      "postinstall": "patch-package"
      
    这样每次安装依赖后,补丁会自动生效。

3. 降级 React/Expo 版本(不推荐)

如果项目能接受,可降级到 React 16.13.x 及以下版本,这个版本还保留了 React.PropTypes,但会限制项目使用新特性,不建议长期采用。

内容的提问来源于stack exchange,提问作者EsotericLanguage

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:32:46