Я использую модуль npm под названием module-alias. Я подключаю некоторые модули в tsconfig.json и package.json
tsconfig.json
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"@config/*": ["config/*"],
"@interfaces/*": ["interfaces/*"],
"@services/*": ["services/*"]
},
"module": "commonjs",
"target": "es2015", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
"sourceMap": true,
"outDir": "./dist", /* Redirect output structure to the directory. */
"rootDir": "./src",
"allowSyntheticDefaultImports": true /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
}
package.json
...
"_moduleAliases": {
"@config": "src/config",
"@interface": "src/interface",
"@services": "src/services"
},
"jest": {
"moduleNameMapper": {
"@config/(.*)": "src/config/$1",
"@interface/(.*)": "src/interface/$1",
"@services/(.*)": "src/services/$1"
},
"moduleFileExtensions": ['js', 'json', 'jsx', 'ts', 'tsx', 'node']
},
...
server.ts
import { logger } from '@config/logger';
все работает нормально, когда я запускаю npm start
, но выдает ошибку при запуске jest
FAIL src/test/article.spec.ts
● Test suite failed to run
Cannot find module '@config/logger' from 'server.ts'
However, Jest was able to find:
'rest/server.ts'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'json', 'jsx', 'ts', 'tsx', 'node'].
Кто-нибудь знает, в чем проблемаявляется? спасибо
Решение работает для меня (Обновление 18/10/2019):
Создайте jest.config.js с кодом ниже:
module.exports = {
"roots": [
"<rootDir>/src/"
],
"transform": {
"^.+\\.tsx?$": "ts-jest"
}
}
и обновите moduleNameMapper в package.json:
...
"_moduleAliases": {
"@config": "./src/config",
"@interfaces": "./src/interfaces",
"@services": "./src/services"
},
"jest": {
"moduleNameMapper": {
"@config/(.*)": "<rootDir>/src/config/$1",
"@interfaces/(.*)": "<rootDir>/src/interfaces/$1",
"@services/(.*)": "<rootDir>/src/services/$1"
}
}
...