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

使用ts-jest时Jest无法解析TSX文件,配置正确仍报错求助

问题分析与解决办法

核心原因

错误提示SyntaxError: Unexpected token '<'表明Jest无法解析JSX语法,核心问题有两个:

  • 测试环境配置错误:当前使用node环境,该环境不支持浏览器端JSX解析,React组件测试必须用jsdom环境模拟浏览器DOM。
  • 转译逻辑存在遗漏,导致TSX文件中的JSX未被正确转换为普通JavaScript。

具体修复步骤

1. 修改测试环境配置

更新jest.config.js中的testEnvironment字段:

// jest.config.js
module.exports = {
  // ...其他配置项
  testEnvironment: 'jsdom', // 替换原有的'node'
  // ...其他配置项
};

2. 确保TSX文件转译规则生效

当前配置的transform规则已经覆盖了TSX文件,但需要确认tsconfig.json中开启了JSX支持:

// tsconfig.json
{
  "compilerOptions": {
    "jsx": "react-jsx" // 若使用React 17+版本推荐此值,低版本可设为"react"
  }
}

3. 检查自定义testUtils文件

测试代码从./testUtils导入了render等方法,需确保:

  • 该文件后缀为.tsx(而非.ts),保证能被ts-jest转译
  • 文件内部的render方法是基于@testing-library/react的正确封装,无语法错误

4. 可选:修复样式文件mock(若后续出现样式相关错误)

先安装依赖:

npm install identity-obj-proxy --save-dev

再取消jest.config.js中样式mock的注释:

// jest.config.js
moduleNameMapper: {
  // ...其他路径映射
  '\\.(scss|sass|css)$': 'identity-obj-proxy'
}

5. 验证修复

运行测试命令确认错误消除:

npm run test

额外排查点

  • 确保ts-jest与jest版本匹配(如ts-jest@29.x对应jest@29.x)
  • 若项目使用Babel,需保证Babel配置支持JSX转译,避免与ts-jest冲突

内容的提问来源于stack exchange,提问作者user.io

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:15:32