React Native初始化项目遇Babel插件弃用警告,求解决方案
解决React Native初始化时Babel废弃插件及uglify-es警告问题
一、处理Babel废弃插件警告
这些@babel/plugin-proposal-*插件对应的ES提案已正式纳入ECMAScript标准,官方停止维护并要求替换为@babel/plugin-transform-*版本,处理方式分两种情况:
1. 项目手动配置了废弃插件
- 打开项目的Babel配置文件(
babel.config.js或.babelrc),将所有@babel/plugin-proposal-xxx替换为对应的@babel/plugin-transform-xxx,比如:- 替换
@babel/plugin-proposal-nullish-coalescing-operator→@babel/plugin-transform-nullish-coalescing-operator - 替换
@babel/plugin-proposal-class-properties→@babel/plugin-transform-class-properties - 其余插件按此规则依次替换
- 替换
- 执行命令卸载旧插件并安装新插件:
npm uninstall @babel/plugin-proposal-nullish-coalescing-operator @babel/plugin-proposal-class-properties @babel/plugin-proposal-numeric-separator @babel/plugin-proposal-optional-catch-binding @babel/plugin-proposal-optional-chaining @babel/plugin-proposal-async-generator-functions @babel/plugin-proposal-object-rest-spread npm install --save-dev @babel/plugin-transform-nullish-coalescing-operator @babel/plugin-transform-class-properties @babel/plugin-transform-numeric-separator @babel/plugin-transform-optional-catch-binding @babel/plugin-transform-optional-chaining @babel/plugin-transform-async-generator-functions @babel/plugin-transform-object-rest-spread
2. 间接依赖引入废弃插件
如果项目没有手动配置这些插件,是依赖树中其他包间接引入的:
- 先执行命令排查依赖来源:
把上述命令中的插件名换成其他废弃插件,逐个确认引入它们的依赖包。npm ls @babel/plugin-proposal-nullish-coalescing-operator - 若该依赖包有更新版本,直接升级依赖即可解决警告;若暂时无法升级,可通过
package.json的resolutions字段强制替换为维护中的transform版本:
在package.json中添加以下内容:
执行"resolutions": { "@babel/plugin-proposal-nullish-coalescing-operator": "^7.24.7", "@babel/plugin-proposal-class-properties": "^7.24.7", "@babel/plugin-proposal-numeric-separator": "^7.24.7", "@babel/plugin-proposal-optional-catch-binding": "^7.24.7", "@babel/plugin-proposal-optional-chaining": "^7.24.7", "@babel/plugin-proposal-async-generator-functions": "^7.24.7", "@babel/plugin-proposal-object-rest-spread": "^7.24.7" }npm install重新安装依赖生效。
二、处理uglify-es废弃警告
uglify-es自v3.13.0起已被uglify-js取代,处理方式:
- 执行命令排查依赖来源:
npm ls uglify-es - 若引入它的依赖有更新版本,升级该依赖至使用
uglify-js的版本;若无法升级,通过package.json的resolutions强制替换:
执行"resolutions": { "uglify-es": "npm:uglify-js@^3.17.4" }npm install重新安装依赖。
注意事项
React Native最新版本的@react-native/babel-preset已内置所有标准ES特性的转换逻辑,通常无需手动添加上述插件,警告多由旧版间接依赖导致。若暂时无法解决,这些警告不会影响项目正常运行,可先忽略。
内容的提问来源于stack exchange,提问作者0x4141
相关产品推荐
相关产品推荐

