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

Jest测试文件中CommonJS require引入依赖报SyntaxError语法错误

问题原因
  • 报错本质是Jest无法识别CoffeeScript语法:项目依赖的第三方包generate-key入口直接引用了未编译为原生JS的.coffee后缀CoffeeScript源码文件,CoffeeScript里用->定义函数的语法不符合原生JS规范,Jest默认按JS规则解析文件时,碰到>字符就会抛出非法token的语法错误。
  • 当前Jest配置缺少两类必要规则:既没有配置CoffeeScript对应的转译逻辑,也没有配置跳过node_modules中非标准JS文件解析的忽略规则,导致Jest直接去解析本不该在测试运行时处理的coffee源码。
  • 贴出的测试文件、被测common.js文件本身没有语法问题,不需要修改业务代码。
解决方法

按优先级从高到低选择以下方案即可:

方案1:补全Jest转译配置(最快修复)

  1. 先安装转译需要的开发依赖:
npm install --save-dev babel-jest @babel/preset-env coffeescript
  1. 修改jest.config.js配置,添加转译和忽略规则:
module.exports = { 
  clearMocks: true, 
  coverageDirectory: 'coverage', 
  testEnvironment: 'node',
  moduleFileExtensions: ['ts', 'js', 'json', 'node', 'coffee'],
  // 不忽略generate-key包,让其走转译流程
  transformIgnorePatterns: ['/node_modules/(?!(generate-key)/)'],
  // 对js和coffee文件走babel转译
  transform: {
    '^.+\\.(js|coffee)$': 'babel-jest'
  }
};
  1. 在项目根目录新建.babelrc配置文件,指定转译规则:
{
  "presets": [
    ["@babel/preset-env", { "targets": { "node": "current" } }]
  ]
}
  1. 重新执行npm run test即可正常运行测试。

方案2:替换不规范的依赖(根源解决)

generate-key包本身发布流程不规范:正常发布到npm的Node包,应该提前把CoffeeScript/TS等源码编译为纯JS文件,不需要用户侧额外配置转译。可以替换成同功能、发布规范的密钥生成类库,彻底避免这类第三方包带来的配置问题。

方案3:排查冗余依赖

如果业务代码没有直接使用generate-key的功能,说明这个包是其他第三方依赖间接引入的,可以通过npm ls generate-key命令查看依赖引入路径,移除冗余依赖、或者把对应依赖锁定到无该问题的稳定版本,也可以解决问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:57:11