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

React Native Expo项目Babel转译报错:ESM配置文件仅支持异步运行

错误原因及解决方法

错误原因

这个报错的核心问题是:项目里存在ES模块(ESM)格式的配置文件,但Expo/Metro运行Babel时采用同步模式,而Babel的同步模式不支持ESM格式的配置文件。

你的babel.config.js用的是CommonJS的module.exports,问题大概率出在其他地方:

  • 项目根目录的package.json里可能添加了"type": "module",导致所有.js文件被默认当作ESM处理
  • 项目中存在其他ESM格式的Babel配置文件,比如babel.config.mjs、.babelrc.mjs

另外,你的Babel预设存在重复项:@babel/preset-react-native已经被包含在module:metro-react-native-babel-preset中,重复添加反而可能引发冲突。

解决步骤

  1. 修正package.json配置
    打开项目根目录的package.json,如果存在"type": "module"这一行,直接删除;如果需要保留ESM全局配置,就把babel.config.js重命名为babel.config.cjs(明确告知Node这是CommonJS文件)。

  2. 清理重复的Babel预设
    修改babel.config.js,简化为以下内容即可:

    module.exports = {
      presets: ['module:metro-react-native-babel-preset'],
    };
    

    该预设已包含React Native所需的全部转译规则,无需额外添加@babel/preset-env或@babel/preset-react-native。

  3. 检查其他Babel配置文件
    若项目中存在babel.config.mjs、.babelrc.mjs这类ESM格式的配置文件,要么直接删除,要么改为CommonJS格式(比如改为.babelrc或重命名为.cjs后缀)。

  4. 重启Expo服务
    执行命令expo start --clear,清除缓存后重新启动服务,确保配置生效。

内容的提问来源于stack exchange,提问作者Rytis Jokubas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:57:08