我正在用jest测试我的js应用。在我的package.json中,我映射了所有的模块,例如 documentation中所述:
"jest": {
"moduleNameMapper": {
"@db/(.*)": "<rootDir>/db/$1",
"@src/(.*)": "<rootDir>/src/$1",
"@dto/(.*)": "<rootDir>/src/dto/$1",
"@repos/(.*)": "<rootDir>/src/repos/$1",
"@fetchers/(.*)": "<rootDir>/src/fetchers/$1",
"@controllers/(.*)": "<rootDir>/src/controllers/$1",
"@parsers/(.*)": "<rootDir>/src/parsers/$1",
"@streams/(.*)": "<rootDir>/src/streams/$1",
"@validators/(.*)": "<rootDir>/src/validators/$1"
}
},
但是,当我实例化一个新的RestRepo并在顶部包含一个导入时,执行测试时会出现此错误:
Cannot find module '@db' from 'RestRepo.js'
Require stack:
src/repos/RestRepo.js
tests/unit/RestEndpoint.test.js
> 1 | const { RestEndpoint } = require('@db');
| ^
2 |
3 | class RestRepo {
我该如何解决?为什么会这样?
答案 0 :(得分:0)
您可以尝试替换
"@db/(.*)": "<rootDir>/db/$1",
使用
"@db(.*)": "<rootDir>/db$1",
这样,捕获组将匹配可选的斜杠/
(如果存在)和
require("@db")
将被解释为
require("<rootDir>/db");
或只需添加另一个条目
"@db": "<rootDir>/db",