Я нахожусь в точке кипения, когда Jest разбирается в синтаксисе импорта / экспорта модулей ES6, и это мешает моему развитию проекта.Моя структура проекта следующая:
root module
org-domain (ES6)
org-services (ES6)
react-ui-module (React via CRA2)
org-services
имеет локальную зависимость пути от org-domain
в своем пакете json:
// in org-services package.json
"dependencies": {
"@org/domain": "file:../org-domain",
},
My .babelrc
in org-services
выглядит следующим образом:
{
"env": {
"test": {
"presets": ["@babel/preset-flow", "@babel/preset-env"]
"plugins": ["@babel/plugin-transform-modules-commonjs"]
}
},
"presets": [
"@babel/preset-flow",
["@babel/preset-env", {
"targets": {
"esmodules": true
}
}]
],
"plugins": [
["module-resolver", {
"root": ["./node_modules/@org/domain"],
"alias": {
"@org/constants": "./node_modules/@org/domain/src/constants",
"@org/contracts": "./node_modules/@org/domain/src/request-contracts"
}
}]
]
}
Я не знаю, связана ли проблема с тем, как я включаю мои зависимости, поэтому я собираюсь добавить более подробную информацию обо всем, что связано с моим импортом / экспортом этих модулейдля ясности.
В файлах реализации org-services
я импортирую org-domain
, используя синтаксис npm, например: import ... from '@org/domain
Вот некоторые наблюдения, которые у меня есть:
В локальной разработке, когда я пытаюсь сослаться на ссылку, нажмите @org/domain
, вместо того, чтобы быть направленным на org-services/node_modules/@org/domain
, я перенаправлен на фактическое относительное местоположение каталога, которое составляет root/org-services
.Я считаю, что Джест игнорирует node_modules
(поправьте меня, если я ошибаюсь), но в моем jest.config.js
для org-services
у меня есть:
collectCoverage: true,
coverageDirectory: 'coverage',
coveragePathIgnorePatterns: [
'/node_modules/'
],
moduleDirectories: [
'src',
'node_modules'
],
moduleFileExtensions: [
'js'
],
transform: {
'^.+\\.js$': 'babel-jest'
},
transformIgnorePatterns: [
'node_modules/(?!@org/domain)$'
]
Насколько я понимаю, все должно работать прямо сейчас со всемиУ меня есть конфигурация, касающаяся установки плагина @babel/plugin-transform-modules-commonjs
в тесте (в пределах .babelrc
) и включения инструкции '^.+\\.js$': 'babel-jest'
под клавишей transform
в jest.config.js
, расположенной в org-services
- но это не так.
Я попробовал все, что смог найти в Интернете по этому вопросу, но безуспешно.С тех пор я никуда не попал, и мое терпение теряется из-за этой инфраструктуры тестирования и отсутствия поддержки ES6.Это не должно быть так сложно, так ясно, что я здесь что-то не так делаю.Пожалуйста, сообщите.
Обновление 1
Найден еще один пост SO, который отражает ситуацию, в которой я нахожусь. Jest не удается перенести импорт из связанного модуля npm
К сожалению, предоставленное решение не работает для моего случая.