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

如何让Jest忽略Babel配置?解决preset 'env'找不到问题

解决Jest强制要求Babel依赖的方案

嘿,我完全懂你的困扰——明明当前Node版本能直接跑源码,Jest却非要揪着Babel预设不放,太烦人了!其实核心原因是Jest默认会启用Babel转换逻辑,哪怕你根本不需要。下面给你几个靠谱的解决办法:

1. 最简单直接:禁用Jest的Babel转换

直接告诉Jest别瞎折腾转换文件了,因为你的源码在当前Node环境下完全能跑。你可以在项目的配置里设置:

  • 如果用package.json管理配置,添加这段:

    {
      "jest": {
        "transform": {}
      }
    }
    
  • 如果用独立的jest.config.js文件,就这么写:

    module.exports = {
      transform: {}
    };
    

设置transform为空对象后,Jest就不会尝试调用Babel进行任何转换了,自然也就不会找env预设了。

2. 针对性配置(如果后续有部分文件需要转换)

假如以后你有部分文件确实需要转换,但大部分源码不需要,那可以用transformIgnorePatterns指定跳过Babel处理的文件路径。不过根据你的描述,这个场景可能暂时用不上,但还是给你参考:

module.exports = {
  transformIgnorePatterns: ["/node_modules/", "<rootDir>/src/"]
};

3. 通过Babel配置适配测试环境

如果你的项目里本来就有Babel配置文件(比如.babelrc或babel.config.js),那可以给测试环境单独设置空预设,让Jest在测试时不加载env预设:
比如在.babelrc里这么写:

{
  "env": {
    "production": {
      "presets": ["env"]
    },
    "test": {
      "presets": []
    }
  }
}

这样Jest运行时会读取test环境的配置,因为预设为空,也就不会报错找不到env了。不过要是你项目里本来就没Babel配置,这个方法就没必要了,直接用第一种方案更省心。

验证一下

改完配置后,重新跑Jest测试命令,应该就不会再弹出那个讨厌的错误了。要是还有问题,不妨跑一下jest --showConfig看看当前生效的配置,确认你的修改有没有被正确加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:48:28