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

React TypeScript项目Jest遇Unexpected Token错误,求配置方案

解决Jest解析axios ES模块报错的配置方案

问题根源

当前报错是因为axios v1+版本默认发布ES模块格式,但你的Jest配置默认跳过了node_modules目录的转译,导致Jest无法解析axios里的import语句。同时你的Babel配置缺少React预设,可能也会影响React组件的测试转译。

具体修复步骤

1. 更新Jest配置,让Jest转译axios

修改jest.config.js,调整transformIgnorePatterns排除axios不被忽略转译,同时补充tsx文件的转译规则:

/** @type {import('ts-jest').JestConfigWithTsJest} */
module.exports = {
    preset: "ts-jest",
    testEnvironment: "jsdom",
    transform: {
        // 同时处理ts和tsx文件
        '^.+\\.(ts|tsx)?$': 'ts-jest',
    },
    // 不对axios进行转译忽略,让Jest处理它的ES模块语法
    transformIgnorePatterns: ['<rootDir>/node_modules/(?!axios/)'],
};

2. 完善Babel配置,添加React预设

首先安装React预设依赖:

npm install --save-dev @babel/preset-react

然后修改babel.config.js,加入@babel/preset-react支持React JSX语法转译:

module.exports = {
    presets: [
        [
            '@babel/preset-env',
            {
                targets: {
                    node: 'current',
                },
            },
        ],
        // 添加React预设
        '@babel/preset-react',
    ],
};

3. 验证配置

重新运行单元测试,此时Jest会转译axios模块解析ES语法,同时正确处理React组件的JSX代码。

额外说明

如果后续还有其他类似的ES模块依赖报错,可将依赖包添加到transformIgnorePatterns的排除列表中,格式示例:(?!axios|your-other-es-package/)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:50:31