Expo eject后执行react-native run-android遇Babel预设缺失500错误求助
解决Expo Eject后运行
react-native run-android出现的Babel预设错误 嘿,我之前 eject Expo 项目的时候也踩过这个一模一样的坑!这个错误本质是Babel找不到指定的装饰器支持预设,咱们一步步来搞定它:
第一步:安装缺失的依赖包
首先确认你的项目里有没有装babel-preset-react-native-stage-0,打开终端在项目根目录运行:npm install babel-preset-react-native-stage-0 --save-dev # 用Yarn的话换成这条: yarn add babel-preset-react-native-stage-0 --dev第二步:检查并修正Babel配置文件
找到项目根目录的.babelrc(或者babel.config.js)文件,确保它的预设配置包含这个带装饰器支持的预设:
如果是.babelrc:{ "presets": ["react-native-stage-0/decorator-support"] }如果是
babel.config.js:module.exports = { presets: ['react-native-stage-0/decorator-support'], };要是你之前用的是Expo的默认Babel配置,eject之后可能需要替换掉原来的
babel-preset-expo,或者把这个预设加进去。第三步:清理缓存,避免旧配置干扰
缓存经常是这类问题的元凶,依次运行以下命令清理:# 清理watchman缓存 watchman watch-del-all # 删除node_modules并重新安装依赖 rm -rf node_modules && npm install # 清理Metro缓存 rm -rf /tmp/metro-bundler-cache-* # 或者直接用react-native命令一键重置缓存 npx react-native start --reset-cache第四步:适配新版本React Native(可选)
要是你的React Native版本在0.60以上,babel-preset-react-native-stage-0可能已经不再维护了,这时候建议换成官方的@babel/preset-react-native,并单独添加装饰器插件:- 安装新依赖:
npm install @babel/preset-react-native @babel/plugin-proposal-decorators --save-dev - 修改Babel配置:
{ "presets": ["@babel/preset-react-native"], "plugins": [ ["@babel/plugin-proposal-decorators", { "legacy": true }] ] }
- 安装新依赖:
最后:重新启动项目
先启动Metro服务器(记得重置缓存):npx react-native start --reset-cache然后在另一个终端运行:
react-native run-android这里建议别用
sudo,除非你真的遇到了权限问题——sudo会改变文件的所有者,后续可能引发更多奇怪的权限错误。
内容的提问来源于stack exchange,提问作者Sadanand
相关产品推荐
相关产品推荐

