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

Mocha+TypeScript+ESM环境下.ts文件扩展名未知错误问询

解决Mocha+TypeScript+ESM环境下的[ERR_UNKNOWN_FILE_EXTENSION]错误

问题根源

你配置的ts-node/register是针对CommonJS模块系统的,但你的项目已经在package.json里设了"type": "module"启用了ESM,两者不兼容,这才导致识别不了.ts文件扩展名。

具体解决步骤

1. 安装适配依赖

先装上ESM专用的ts-node相关依赖,同时确保TypeScript和Mocha的类型文件齐全:

yarn add -D ts-node typescript @types/mocha

2. 修改.mocharc.json配置

把原来的require配置替换成ESM专用的加载器:

{
  "extension": ["ts"],
  "loader": "ts-node/esm",
  "spec": "test/**/*.ts"
}

3. 调整tsconfig.json(关键配置)

让TypeScript输出适配ESM的代码,核心参数要设置正确:

{
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "NodeNext",
    "target": "ES2020",
    "esModuleInterop": true,
    "skipLibCheck": true,
    "strict": true
  },
  "include": ["test/**/*"]
}

4. 运行测试

现在直接执行yarn run mocha就能正常运行测试了,不需要额外加参数。

额外提醒

  • 如果测试文件里用了import/export语法,一定要保证tsconfig.json里的module和moduleResolution配置正确,否则可能出现模块解析失败的问题。
  • Node.js 20.x对ESM的支持已经很完善,但要避免在ESM项目里混用require()加载模块,容易引发冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:47:08