运行Mocha测试时修改TypeScript默认配置的include选项
解决ts-node/esm运行Mocha测试时的文件忽略问题
你的问题核心是:生产环境的tsconfig.json仅将Source目录纳入编译范围,但Mocha运行测试时需要处理Test目录的文件,导致ts-node因为配置限制忽略了测试文件,触发报错。以下是针对该场景的具体解决方法:
方案1:创建测试专用的TypeScript配置文件
这种方式能精准区分生产和测试的编译范围,避免影响原配置:
- 在项目根目录新建
tsconfig.test.json,继承原配置并扩展include范围:
{ "extends": "./tsconfig.json", "include": ["Source/**/*", "Test/**/*"] }
- 修改Mocha运行命令,指定使用这个测试配置:
mocha -r ts-node/esm --ts-node-project ./tsconfig.test.json Test/**/*.ts
方案2:临时跳过ts-node的忽略规则(快速应急)
如果不想新增配置文件,可以通过skipIgnore参数强制ts-node处理测试文件,但注意这会让ts-node处理所有原本被忽略的文件,适合临时调试:
mocha -r ts-node/esm --ts-node-options='{"skipIgnore": true}' Test/**/*.ts
补充说明
解决当前忽略问题后,你提到的文件扩展名错误可以进一步排查:如果项目启用了ES模块(package.json中type: "module"),测试文件建议使用.mts扩展名,或者确保tsconfig的moduleResolution、module等配置与ES模块模式匹配。
内容的提问来源于stack exchange,提问作者Takeshi Tokugawa YD
相关产品推荐
相关产品推荐

