Mocha测试报错:无法找到模块'@app/common/south_events_manager'
我编写了一段单元测试代码:
import {SOUTH_EVENTS_ENUM, SouthEventsManager} from "@app/common/south_events_manager"; import {expect} from "chai"; import config from "config"; const {KafkaSouth} = require('@app/kafka_conn/kafka_south'); const sinon = require("sinon"); declare const Tester: any; describe('SouthEventsManager', function() { const kafkaSouthStub = sinon.createStubInstance(KafkaSouth); const southEventsManager = new SouthEventsManager(kafkaSouthStub);
使用Mocha运行测试时,收到如下错误提示:
Error: Cannot find module '@app/common/south_events_manager' Require stack:
- C:\HQNorth\North\test\common\south_events_manager.ts
请问该如何解决此问题?
解决方法
检查路径别名配置
@app是自定义路径别名,需确保项目的tsconfig.json(或jsconfig.json)中已正确映射该别名到实际目录。例如在tsconfig.json的compilerOptions中添加:"paths": { "@app/*": ["./src/*"] }注意路径需相对于配置文件的位置,假设项目根目录为
C:\HQNorth\North,则./src/*对应C:\HQNorth\North\src,此时@app/common/south_events_manager会指向C:\HQNorth\North\src\common\south_events_manager.ts。让Mocha识别路径别名
TypeScript的路径别名默认不被Node.js或Mocha识别,需额外配置:- 若使用
ts-node运行Mocha,先安装tsconfig-paths,然后在Mocha命令中添加-r tsconfig-paths/register,或在.mocharc.json配置文件中添加:"require": ["tsconfig-paths/register", "ts-node/register"] - 若运行编译后的JS文件,需确保编译时路径已替换为实际相对路径,或使用
module-alias包在运行时处理别名,在测试入口文件顶部添加:const moduleAlias = require('module-alias'); moduleAlias.addAlias('@app', __dirname + '/../src');
- 若使用
验证文件实际位置
确认@app别名对应的实际路径下存在目标文件,比如C:\HQNorth\North\src\common\south_events_manager.ts,同时注意文件名和大小写需与导入语句一致(部分场景下TypeScript/Node会严格匹配大小写)。检查依赖与项目结构
确保项目根目录的package.json配置正确,所有依赖已安装(执行npm install或yarn install)。同时确认测试文件与源码目录的相对结构未发生变动,避免路径引用失效。
内容的提问来源于stack exchange,提问作者CrazySynthax

