Я устанавливаю конфигурацию для запуска моих тестов в приложении для создания сценариев create-реагировать-приложение + (, из которого я извлек ). Я использую Jest + энзим. В моем tsconfig.json я установил baseUrl='./src'
, поэтому я могу использовать абсолютные пути при импорте модулей. Например, это типичная инструкция импорта в одном из моих файлов:
import LayoutFlexBoxItem from 'framework/components/ui/LayoutFlexBoxItem';
Вы видите, что путь абсолютный (из папки / src), а не относительный.
Это работает нормально, когда я работаю в режиме отладки (yarn start
)
Но когда я запускаю свой тест (yarn test
), я получаю эту ошибку:
Cannot find module 'framework/components/Navigation' from 'index.tsx'
Похоже, что jest не может разрешить этот абсолютный путь, хотя я настроил его в своем файле tsconfig.json. Это мой tsconfig.json:
{
"compilerOptions": {
"outDir": "dist",
"module": "esnext",
"target": "es5",
"lib": ["es6", "dom"],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true,
"baseUrl": "./src"
},
"exclude": [
"node_modules",
"build",
"dist",
"config",
"scripts",
"acceptance-tests",
"webpack",
"jest",
"src/setupTests.ts"
]
}
Теперь я вижу, что в корне моего проекта есть сгенерированный tsconfig.test.json
. Это конфигурация ts, используемая для теста. И вот его содержание:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs"
}
}
Как видите, «модуль» здесь равен commonjs
, тогда как в конфигурации по умолчанию это esnext
. Может ли это быть одной из причин?
Кто-нибудь смог протестировать свой машинописный проект с помощью Jest и абсолютного пути? или это известная ошибка? Поскольку я извлек из конфигурации по умолчанию, есть ли какие-то настройки, которые нужно добавить в конфигурацию моего веб-пакета?
Спасибо за ваш вклад и предложение.