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

如何在保留console.log输出的同时禁用Jest的esModuleInterop警告?

解决ts-jest TS151001警告问题(保留console.log)

以下几种方法可以在不开启esModuleInterop、保留自定义console.log的前提下,屏蔽目标警告或所有Jest相关警告:

方法1:精准屏蔽TS151001警告

直接通过ts-jest的配置忽略指定诊断代码,这是最精准的方式:

在你的jest.config.js中修改transform配置:

module.exports = {
  // 其他现有配置...
  transform: {
    '^.+\\.tsx?$': ['ts-jest', {
      diagnostics: {
        ignoreCodes: [151001] // 忽略TS151001对应的警告
      }
    }]
  }
};

这样只会屏蔽你遇到的这个esModuleInterop提示警告,其他正常警告和console.log输出不受影响。

方法2:通过拦截console.warn过滤特定警告

如果上述方法不生效,可以在Jest的初始化文件中手动拦截警告输出:

  1. 创建setup-jest.js文件(项目根目录):
const originalWarn = console.warn;

console.warn = (...args) => {
  // 匹配目标警告的特征字符串
  const targetWarn = args.some(arg => 
    typeof arg === 'string' && arg.includes('TS151001') && arg.includes('esModuleInterop')
  );
  
  if (!targetWarn) {
    originalWarn.apply(console, args);
  }
};
  1. 在jest.config.js中引入这个初始化文件:
module.exports = {
  // 其他配置...
  setupFilesAfterEnv: ['./setup-jest.js']
};

方法3:全局禁用Jest所有警告

如果需要屏蔽所有Jest相关警告,可组合使用--silent和--verbose参数:

命令行运行时:

jest --silent --verbose

或者在jest.config.js中配置:

module.exports = {
  // 其他配置...
  silent: true,
  verbose: true
};

--silent会关闭Jest内部的警告输出,--verbose会确保测试日志和自定义console.log正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:52:51