我有一个包含typescript的节点项目,并且在我的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/文件夹。
我还尝试将'@‘替换为'$’,但也有其他错误...
发布于 2021-11-26 14:26:16
我用下面的配置让它工作。
moduleNameMapper: {
"^@/(.*)$": "<rootDir>/src/$1",
"^@components/(.*)$": "<rootDir>/src/components/$1",
},This article很有帮助。
在我的例子中,我希望将@映射到./src,将@components映射到./src/components
发布于 2019-11-30 00:13:13
我可以解决它,但不能用@符号,我必须使用$,更重要的是,我必须转义它并用方括号将它括起来,就像这样:
tsconfig.json:
"paths": { /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
"$project/*": ["./../*"],
"$*": ["./*"],
},jest.config.js:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
roots: ['<rootDir>/src/'],
modulePathIgnorePatterns: ['<rootDir>/dist/', '<rootDir>/build/'],
testMatch: ['**/*.spec.ts'],
moduleNameMapper: {
"^[\$]project/(.*)": "<rootDir>/$1",
"^[\$](.*)": "<rootDir>/src/$1",
}
}我希望它能对其他人有用,配置所有这些小细节真的很痛苦……
见鬼,我几乎把它都做好了(ttsc和ts-jest运行得很好),但是vscode不能识别映射到'$‘的导入,但是可以使用'@’…
https://stackoverflow.com/questions/59107929
复制相似问题