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

Jenkins pipeline执行测试用例时报Jest encountered an unexpected token错误

问题排查与解决方法

核心报错原因

报错触发点是pretty-format包中} catch {语法的识别失败,该写法属于ES2019推出的可选catch绑定特性,低于10.0版本的Node.js原生不支持该语法。本地运行正常是因为你本地Node版本≥10,而Jenkins构建环境的Node版本更低,才会出现环境差异问题。

排查步骤

  • 第一步:在Jenkins pipeline的测试执行步骤前添加node -v、npm -v命令,打印Jenkins agent的Node.js版本,确认和本地开发环境的Node版本是否一致。
  • 第二步:确认Jenkins构建流程是否使用了和本地一致的package-lock.json/yarn.lock文件执行依赖安装,避免两侧安装的pretty-format版本不一致。

解决方案

方案1:升级Jenkins Node.js版本(最推荐)

将Jenkins agent的Node.js版本升级到10.x及以上的长期支持版本,和本地开发环境版本保持一致,从底层兼容新语法。

方案2:修改Jest配置适配低版本Node

如果暂时无法升级Jenkins Node版本,可以修改Jest配置(jest.config.js或者package.json的jest字段),将pretty-format加入Babel转译名单:

module.exports = {
  // 保留原有其他配置
  transformIgnorePatterns: [
    "node_modules/(?!(pretty-format)/)"
  ]
}

该配置会让Babel转译node_modules目录下的pretty-format包,把高版本语法转换为低版本Node可识别的语法。

方案3:锁定兼容版本的pretty-format

如果前两个方案都不适用,可以在package.json中强制指定兼容低版本Node的pretty-format版本:

{
  "resolutions": {
    "pretty-format": "24.9.0"
  }
}

24.9.0版本的pretty-format未使用可选catch绑定语法,不会触发该报错。如果使用npm作为包管理工具,可以安装npm-force-resolutions包实现强制版本锁定。

内容的提问来源于stack exchange,提问作者Vaibhav Kumar Ambeshta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:15:03