配置Babel转译配置文件为CommonJS 修复Jest ES模块报错
问题根因
你配置的babel-jest没有正常执行转译,核心原因是你的Babel配置文件结构写错,导致@babel/preset-env根本没有被正确加载,自然无法把ES模块的import/export语法转成Jest默认支持的CommonJS规范。
你当前的babel.config.json把preset的配置对象错当成了presets数组的第二个独立元素,属于结构语法错误,Babel解析配置时会直接忽略无效配置项。
修复方案
- 修正
babel.config.json的配置结构,将preset名称和它的配置项包裹在同一个子数组中:
{ "presets": [ ["@babel/preset-env", { "targets": { "node": "current" } }] ] }
- 如果修正Babel配置后仍然报相同错误,或后续报引入的第三方ESM包(比如你代码里引入的
flat就是纯ESM包)的语法错误,在jest.config.js中添加transformIgnorePatterns配置,指定需要纳入转译范围的路径:
// 追加到jest.config.js的配置项中 transformIgnorePatterns: [ '/node_modules/(?!(flat)/)' ],
改完后重新运行Jest即可,babel-jest会正常转译包括fr-FR.js在内的项目JS文件,把ES模块语法转为Jest可识别的CommonJS语法,不会再出现Unexpected token 'export'报错。
内容的提问来源于stack exchange,提问作者Théo Lavaux
相关产品推荐
相关产品推荐

