React Native 0.64升0.65.1构建报错Unexpected token =求助
React Native 0.64.1 升级 0.65.1 构建
Unexpected token = 报错解决方案 报错根因
报错指向metro/src/Server.js中的类公共字段语法processRequest = (req, res, next) => {},该语法为ES2022特性,Node 14.6以下版本默认不支持。你终端升级的Node 14.17未生效,是因为Android构建阶段调用的是系统环境/gradle内置的低版本Node,而非终端nvm等工具管理的Node版本。
排查&解决步骤
- 第一步:确认构建阶段实际使用的Node版本
在android/app/build.gradle文件顶部添加以下代码,重新执行构建,查看控制台输出的Node版本:exec { commandLine 'node', '-v' standardOutput = new ByteArrayOutputStream() doLast { println "构建使用的Node版本:${standardOutput.toString().trim()}" } } - 第二步:匹配对应的解决方案
- 若输出版本低于14.6:
- 方案1:统一升级全局Node环境,包括Android Studio、CI/CD等构建场景使用的系统Node,确保所有环境Node版本都为14.17+
- 方案2:不想改全局环境的,可在
android/build.gradle中配置gradle-node插件,指定构建使用14.17.0版本Node,由gradle自动下载隔离使用 - 临时方案:修改Node启动参数,在
android/app/build.gradle中给bundleReleaseJsAndAssets任务添加启动参数:project.ext.react = [ nodeExecutableAndArgs: ["node", "--harmony-public-fields", "--harmony-private-fields"] ]
- 若输出版本确实是14.17+:
先删除package.json dependencies中废弃的旧依赖"babel-preset-react-native": "^4.0.1",再执行以下命令重置依赖:
执行完后重新构建即可,该旧依赖和RN 0.65+使用的rm -rf node_modules package-lock.json yarn.lock npm installmetro-react-native-babel-preset存在规则冲突,会导致语法转译异常。
- 若输出版本低于14.6:
内容的提问来源于stack exchange,提问作者Cparello
相关产品推荐
相关产品推荐

