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

使用Jest与React时遇模块外import错误,求允许转换axios

解决Jest测试中axios的ES模块语法错误问题

你遇到的问题是因为axios v1+采用了ES模块格式,而Jest默认会跳过node_modules目录的转译,导致无法识别import语句。下面是具体的解决步骤:

1. 配置Jest允许转译axios模块

你需要修改Jest的transformIgnorePatterns配置,让它不对axios进行转译忽略。有两种方式:

方式一:在package.json中添加Jest配置

直接在你的package.json末尾添加以下配置:

"jest": {
  "transformIgnorePatterns": [
    "node_modules/(?!axios/)"
  ],
  "testEnvironment": "jsdom"
}

这里的(?!axios/)是正则负向预查,意思是除了axios之外,node_modules里的其他模块都保持默认的转译忽略。

方式二:创建单独的jest.config.js文件

如果偏好单独的配置文件,在项目根目录新建jest.config.js,写入:

module.exports = {
  transformIgnorePatterns: ['node_modules/(?!axios/)'],
  testEnvironment: 'jsdom'
};

2. 修复Babel配置的语法错误

你的.babelrc文件中,presets数组的最后一项后面多了一个多余的逗号,这会导致语法错误,需要删除:
修改前:

{
  "presets": [
    "@babel/preset-env",
    ["@babel/preset-react", {"runtime": "automatic"}],
  ],
  "plugins": [
    "@babel/plugin-proposal-class-properties"
  ]
}

修改后:

{
  "presets": [
    "@babel/preset-env",
    ["@babel/preset-react", {"runtime": "automatic"}]
  ],
  "plugins": [
    "@babel/plugin-proposal-class-properties"
  ]
}

3. 验证修复

完成以上配置后,重新运行测试命令:

npm test

此时Jest会使用babel-jest转译axios模块,import语句的语法错误应该会消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:20:28