升级React Native 0.65.1后Metro Builder报Unexpected token =语法错误
问题原因
该报错是当前构建环境调用的Node.js版本不支持类公共字段声明语法导致的。React Native 0.65 配套的Metro版本使用了该语法编写核心代码,仅 Node.js v12.4.0、v14.0.0 及以上版本原生支持该特性。
升级Node版本后问题未解决,大概率是项目构建流程调用的Node版本和全局升级的版本不统一导致的。
解决方案
1. 统一所有环境的Node版本
优先完成以下检查:
- 终端执行
node -v确认全局Node版本 ≥14.0.0,最低不得低于12.4.0 - 检查项目根目录下是否存在
.nvmrc、.node-version等版本锁文件,确认文件内指定的Node版本符合要求 - 打开安卓项目配置文件
android/gradle.properties,检查是否存在NODEJS_BINARY配置项,确认该配置指向的Node路径对应版本符合要求,不要使用系统预装的低版本Node
2. 全量清理缓存后重新构建
执行以下命令清理所有缓存后再尝试打包:
# 删除旧依赖和锁文件 rm -rf node_modules package-lock.json yarn.lock # 重新安装依赖 npm install # 清理RN本地缓存 npx react-native start --reset-cache # 清理安卓构建缓存 cd android && ./gradlew clean && cd ..
3. 低版本Node临时兼容方案
如果受项目限制暂时无法升级Node版本,可强制锁定Metro版本到支持低版本Node的0.64.0:
- Yarn用户直接在
package.json中新增resolutions配置:
{ "resolutions": { "metro": "0.64.0" } }
- NPM用户安装
npm-force-resolutions后,参照上述配置添加对应规则即可。
配置完成后重新安装依赖就能正常构建。
内容的提问来源于stack exchange,提问作者Maaax
相关产品推荐
相关产品推荐

