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

升级Sinon至v18后Jest无法识别export default语法求助

解决Sinon v18升级后Jest无法识别ES模块的问题

问题根源

Sinon升级到v18后,默认提供的ES模块版本(sinon-esm.js)使用了export default这类ES语法,但Jest默认不会转译node_modules目录下的文件,导致解析失败。

具体解决步骤

1. 调整Jest配置,强制转译Sinon

在你的Jest配置文件(jest.config.js或package.json的jest字段)中添加transformIgnorePatterns规则,指定除了Sinon之外,其他node_modules文件不转译:

// jest.config.js
module.exports = {
  // 保留原有配置
  transformIgnorePatterns: [
    'node_modules/(?!sinon/)'
  ]
};

如果是在package.json中配置:

{
  "jest": {
    "transformIgnorePatterns": ["node_modules/(?!sinon/)"]
  }
}

2. 确保Babel能处理ES模块转译

检查你的Babel配置文件(.babelrc或babel.config.js),需包含适配Node环境的预设,保证将ES语法转译为Jest可识别的CommonJS:

// babel.config.js
module.exports = {
  presets: [
    ['@babel/preset-env', { targets: { node: 'current' } }],
    '@babel/preset-react'
  ]
};

3. 直接导入Sinon的CommonJS版本(备选方案)

若上述配置仍未解决问题,可以跳过ES模块版本,直接导入Sinon的CommonJS版本:

// 替换原有import语句
import sinon from 'sinon/pkg/sinon';

或使用CommonJS语法:

const sinon = require('sinon/pkg/sinon');

验证修改

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

npm test

确认Jest不再抛出export default相关语法错误,所有测试用例正常执行。

内容的提问来源于stack exchange,提问作者مالك الدسوقي

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 08:28:09