我有一个带有打字稿的节点项目,并且在我的 tsconfig.json 文件中配置了以下路径:
"paths": { /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
"@project/*": ["./../*"],
"@*": ["./*"],
},
我的配置文件位于 /project 文件夹,我的源位于 /project/src
它工作正常,它正确地将 @xxx/yyy 映射到 src/xxx/yyy 和 @project/package.json 到 /project/package.json
我正在尝试使用 ts-jest 实现相同的目标,我尝试在我的 jest.config.js 文件中使用以下 moduleNameMapper:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
roots: ['<rootDir>/src/'],
modulePathIgnorePatterns: ['<rootDir>/dist/', '<rootDir>/build/'],
testMatch: ['**/*.spec.ts'],
moduleNameMapper: {
"^\@(.*)": "<rootDir>/src/$1",
}
}
但我收到以下错误:
FAIL src/lib/error/BaseError.spec.ts
● Test suite failed to run
Configuration error:
Could not locate module @babel/code-frame mapped as:
C:\data\devel\apps\sgte-it\coordinacion\juridicos\wspjn\src\babel/code-frame.
Please check your configuration for these entries:
{
"moduleNameMapper": {
"/^@(.*)/": "C:\data\devel\apps\sgte-it\coordinacion\juridicos\wspjn\src\$1"
},
"resolver": null
}
at createNoMappedModuleFoundError (node_modules/jest-resolve/build/index.js:501:17)
另一方面,如果我像这样映射 /src 中的每个文件夹:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
roots: ['<rootDir>/src/'],
modulePathIgnorePatterns: ['<rootDir>/dist/', '<rootDir>/build/'],
testMatch: ['**/*.spec.ts'],
moduleNameMapper: {
"@db/(.*)": "<rootDir>/src/db/$1",
"@lib/(.*)": "<rootDir>/src/lib/$1",
"@modules/(.*)": "<rootDir>/src/modules/$1",
"@services/(.*)": "<rootDir>/src/services/$1"
}
}
它工作正常,但我必须用我添加的每个新根文件夹更新它。
有没有标准的、推荐的方法来实现这样的事情?我希望有一个特殊字符(在本例中为 @)指向我的 /src/ 文件夹。
还尝试将 '@' 替换为 '$' 但也有其他错误...