npm start启动React Native可穿戴项目报Invalid regular expression错误
复现流程
- 拉取react-native-wearables-demo项目代码
- 执行
npm install安装依赖,安装过程无报错 - 执行
npm start --reset-cache启动服务时抛出如下错误:
Invalid regular expression: /(.\fixtures\.|node_modules[\]react[\]dist[\].|website\node_modules\.|heapCapture\bundle.js|.\tests\.)$/: Unterminated character class
- 报错参考截图:

报错根因
该问题是高版本Node与旧版Metro打包工具的正则解析不兼容导致:这个demo是较早版本的React Native项目,依赖的低版本Metro中用于过滤文件路径的黑名单正则,采用了[\\]的反斜杠转义写法;在Node 12及以上版本中,该写法会被正则引擎判定为未闭合的字符类,直接抛出语法错误。
修复方法
两种方案二选一即可:
- 环境匹配法:将本地Node版本切换到10.x,与项目开发时的依赖环境对齐,重新执行依赖安装后启动服务即可正常运行。
- 配置修正法(无需切换Node版本,推荐):
- 打开项目路径下的
node_modules/metro-config/src/defaults/blacklist.js文件 - 将文件内正则表达式里所有的
[\\]片段替换为\\\\,修正反斜杠转义逻辑 - 保存文件后重新执行
npm start --reset-cache即可正常启动
*提示:直接修改node_modules内文件属于临时修复,重装依赖后修改会失效;需要永久生效的话,可以在项目根目录新建metro.config.js配置文件,自定义覆盖默认的黑名单过滤规则即可。
- 打开项目路径下的
内容的提问来源于stack exchange,提问作者Yeong Lestle
相关产品推荐
相关产品推荐

