You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,并单独添加装饰器插件:

    1. 安装新依赖:
      npm install @babel/preset-react-native @babel/plugin-proposal-decorators --save-dev
      
    2. 修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:12:31