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

Mocha运行TypeScript测试报错:未知.ts文件扩展名及相关问题

Mocha + TypeScript 配置错误排查方向

以下是针对你遇到的两种错误的具体排查思路:

1. 针对 TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts"

  • 验证mocharc.json核心配置
    确认配置文件中require字段准确指向ts-node/register,extensions包含ts,且spec路径能正确匹配到测试文件。比如:
    {
      "extension": ["ts"],
      "spec": "test/**/*.spec.ts",
      "require": "ts-node/register"
    }
    
    同时确保配置文件放在项目根目录,或者通过脚本指定--config参数明确路径。
  • 检查package.json脚本
    确认tstest脚本没有多余参数干扰,比如直接写"tstest": "mocha"即可,若手动指定配置则用"tstest": "mocha --config mocharc.json"。
  • 直接用命令行测试
    跳过配置文件,执行npx mocha test/**/*.ts --require ts-node/register --extension ts,如果能正常运行,说明问题出在mocharc.json的配置上;如果仍报错,转向依赖或tsconfig排查。

2. 针对 Error: Debug Failure. False expression: Non-string value passed to ts.resolveTypeReferenceDirective

  • 强制对齐ts-node与TypeScript版本兼容性
    这个错误几乎都是版本不匹配导致的:
    • 执行npm ls ts-node typescript查看当前依赖版本,检查是否存在嵌套安装的不同版本(比如子依赖引入了其他TS版本)。
    • 参考ts-node官方的版本兼容矩阵,选择匹配的组合(比如ts-node v10.x对应TS 4.5-4.9,v11.x对应TS 4.8+),不要盲目照搬示例版本。
  • 清理依赖缓存
    删除node_modules和package-lock.json,重新执行npm install,彻底清除缓存带来的版本冲突。

通用排查步骤

  • 检查tsconfig.json关键选项
    即使你的tsconfig在示例项目能运行,也要确认自身项目的配置:
    • 暂时将compilerOptions.module设为CommonJS(ts-node对CommonJS支持更稳定)。
    • 确保compilerOptions.esModuleInterop设为true,避免模块导入解析问题。
    • 确认include字段包含测试文件路径,比如["src/**/*", "test/**/*"]。
  • 清理编译产物
    删除项目中的dist或其他编译输出目录,避免Mocha误加载旧的JS文件干扰测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:15:35