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

使用Mocha测试TypeScript代码时遇TypeError: addition不是函数问题求助

解决TypeScript + Mocha测试中的导入与函数调用错误

步骤1:安装必要依赖

先安装所有测试和TypeScript相关的依赖包:

npm install --save-dev mocha chai typescript ts-node @types/mocha @types/chai

步骤2:调整tsconfig.json配置

修改tsconfig.json,让模块配置适配Mocha的CommonJS运行环境:

{
  "compilerOptions": {
    "target": "ES6",
    "module": "CommonJS",
    "moduleResolution": "Node",
    "outDir": "./dist",
    "rootDir": "./",
    "strict": true,
    "esModuleInterop": true
  },
  "include": ["src/**/*", "test/**/*"]
}
  • esModuleInterop:解决ES模块与CommonJS模块的互兼容问题,避免导入时出现函数未定义的错误
  • module: "CommonJS":让TypeScript编译后的代码适配Mocha默认的CommonJS模块系统
  • include:确保src和test目录下的TypeScript文件都被编译处理

步骤3:配置package.json的测试脚本

在package.json中添加测试命令,用ts-node/register直接编译并运行TypeScript测试文件:

{
  "scripts": {
    "test": "mocha -r ts-node/register test/**/*.spec.ts"
  }
}

步骤4:运行测试

执行以下命令即可启动测试:

npm test

错误原因说明

  1. 直接执行mocha失败:Mocha默认无法识别TypeScript文件,必须通过ts-node实时编译TypeScript代码
  2. TypeError: (0 , calculator_1.addition) is not a function:TypeScript编译后的ES模块导出在CommonJS环境下无法被正确识别,开启esModuleInterop后会自动处理模块导入的兼容性
  3. 混用require和import:两种模块加载方式混用会导致模块解析混乱,统一使用ES模块的import语法,配合正确的tsconfig配置即可避免此类问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:25:54