Expo React Native编译报错:child.isClassAccessorProperty is not a function
解决
child.isClassAccessorProperty is not a function构建错误 问题根源
这个错误是Babel版本不兼容导致的:child.isClassAccessorProperty是Babel 7.18.0及以上版本才支持的API,而你的项目中@babel/core仅为^7.12.9,无法解析react-native-gesture-handler@2.9.0中用到的新语法。
修复步骤
1. 升级Babel核心依赖
在项目根目录执行命令,升级到适配Expo 47的Babel版本:
npm install @babel/core@^7.19.3 --save-dev # 若用yarn则执行 yarn add @babel/core@^7.19.3 --dev
7.19.3是Expo 47官方推荐的Babel版本,能完美兼容当前项目的React Native 0.70.x环境。
2. 清理缓存并重装依赖
升级后彻底清理缓存,避免旧版本文件残留:
# 清除npm缓存 npm cache clean --force # 删除node_modules和锁文件 rm -rf node_modules package-lock.json # 重新安装所有依赖 npm install # 清除Expo缓存并重启项目 expo start -c
3. 可选:锁定依赖版本(防止自动升级)
如果想避免后续依赖自动升级引发问题,可将package.json中@babel/core的版本号从^7.19.3改为7.19.3(去掉前缀^),固定版本号。
验证
执行expo start重新启动项目,此时JavaScript bundle应该能正常构建,错误消失。
内容的提问来源于stack exchange,提问作者ilies Ould menouer
相关产品推荐
相关产品推荐

