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

React Native测试失败:缺失Babel转换配置问题求助

解决React Native测试中"Unexpected token 'export'"和"Cannot find module 'babel-preset-react-native'"的问题

我来帮你一步步排查并解决这个问题,你的情况其实是React Native 0.60+版本的配置规则变化加上缓存、第三方依赖转译导致的:

1. 移除冲突的.babelrc文件

你手动添加的.babelrc指定了旧的babel-preset-react-native,但RN 0.60+已经默认使用metro-react-native-babel-preset(你的项目里已经通过babel.config.js配置了这个预设)。多个babel配置文件会直接导致冲突,而且旧预设已经被官方弃用,所以直接删除.babelrc即可。

2. 调整Jest配置(适配第三方依赖)

你的package.json里已经配置了jest的react-native预设,但你使用的react-navigation系列依赖可能包含未转译的ES6语法——jest默认不会转译node_modules目录下的内容,这就会引发"Unexpected token 'export'"这类语法错误。你可以修改jest配置,让它转译这些必要的库:

在package.json的jest字段里更新为:

"jest": {
  "preset": "react-native",
  "transformIgnorePatterns": [
    "node_modules/(?!(react-native|react-navigation-stack|react-navigation|react-native-gesture-handler)/)"
  ]
}

3. 清除Jest缓存并重新安装依赖

Jest会缓存编译结果,之前的错误配置可能已经被缓存下来,所以先清除缓存:

npx jest --clearCache

然后重新安装依赖,确保没有缺失或损坏的依赖文件:

npm install

4. 重新运行测试

现在执行测试命令应该就能正常运行了:

npm test

补充说明

  • RN 0.60+已经统一使用metro-react-native-babel-preset,旧的babel-preset-react-native早已被废弃,手动添加.babelrc会覆盖项目默认的babel配置,直接导致"找不到模块"的错误。
  • 部分第三方依赖没有提前转译ES模块语法,jest默认跳过node_modules的转译,所以需要把这些库加入transformIgnorePatterns的例外列表,让jest处理它们的转译。
  • 清除jest缓存是为了确保新的配置完全生效,避免使用之前错误的编译缓存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:14:31