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

Jest测试报错:TypeError: debug is not a function求解决

解决Jest测试中fetch-mock的"TypeError: debug is not a function"报错

问题分析

这个报错源于fetch-mock内部依赖的debug模块未被正确转译,或者你的transformIgnorePatterns配置存在路径匹配错误、规则冲突的问题。

解决方案

1. 修正transformIgnorePatterns配置

删除冗余规则,根据项目目录结构配置正确的白名单规则:

  • 如果你的jest.config.js位于子项目目录,上级目录有node_modules,使用以下配置:
const path = require('path');

module.exports = {
  // 其他配置...
  transformIgnorePatterns: [
    // 排除上级node_modules中除fetch-mock外的所有包
    `^${path.resolve(__dirname, '../node_modules')}/(?!fetch-mock)`
  ]
};
  • 如果是单项目结构(node_modules和jest.config.js同目录),简化为:
module.exports = {
  // 其他配置...
  transformIgnorePatterns: [
    'node_modules/(?!fetch-mock)'
  ]
};

注意:正则中的负向预查要确保格式正确,避免多余的斜杠或括号导致匹配失败。

2. 确保Babel转译配置正确

检查你的Babel配置文件(.babelrc或babel.config.js),确保包含@babel/preset-env预设,以转译ES6+语法:

{
  "presets": [
    ["@babel/preset-env", { "targets": { "node": "current" } }]
  ]
}

3. 清除Jest缓存

运行测试时添加--clearCache参数,清除旧缓存:

jest --clearCache

4. 调整fetch-mock版本

如果上述方法无效,尝试切换fetch-mock的版本:

  • 降级到稳定版(如v9.11.0):
npm install fetch-mock@9.11.0 --save-dev
  • 或升级到最新兼容版本,查看其文档确认Jest支持情况。

5. 强制转译debug模块

若问题仍存在,将debug模块也加入转译白名单:

transformIgnorePatterns: [
  `^${path.resolve(__dirname, '../node_modules')}/(?!fetch-mock|debug)`
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:48:27