如何让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
相关产品推荐
相关产品推荐

