使用EAS构建Expo Android项目时出现正则表达式无效错误求助
问题
使用eas build -p android --profile preview构建Expo应用时触发错误:无效正则表达式:Range out of order in character class。本地模拟器运行完全正常,项目未自定义正则表达式,怀疑问题来自依赖库。通过逐个删除组件排查,发现移除/icon/burger.js后可正常构建,但该组件为项目必需,其代码如下:
import * as React from "react" import Svg, { Path } from "react-native-svg" const Burger = () => ( <Svg xmlns="http://www.w3.org/2000/svg" width={30} height={30} fill="white" className="bi bi-list" viewBox="0 0 16 16" stroke="white" > <Path fillRule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z" /> </Svg> ) export default Burger
解决方案
针对该SVG组件引发的EAS构建错误,可尝试以下修复方式:
- 移除无用的className属性:React Native不支持Web标准的
className属性,该属性可能被构建工具的正则解析逻辑误判。直接删除Svg标签中的className="bi bi-list"即可,此处该属性未实际生效,不影响组件功能。 - 调整react-native-svg导入方式:将
import Svg, { Path } from "react-native-svg"改为import { Svg, Path } from "react-native-svg",部分打包工具对默认导出与命名导出的处理逻辑存在差异,可规避解析异常。 - 升级react-native-svg依赖:旧版本的react-native-svg可能与Expo EAS构建工具存在兼容性问题,执行
npx expo install react-native-svg@latest升级至最新兼容版本,可解决底层正则解析bug。 - 重新生成SVG组件:若以上方法无效,可使用Expo官方SVG转换工具将原始SVG代码重新生成React Native兼容组件,避免手动编写的属性触发解析错误。
内容的提问来源于stack exchange,提问作者Papazy
相关产品推荐
相关产品推荐

