Я просто пытаюсь заставить шутку работать. У меня есть такая структура каталогов:
.
├── api
│ ├── README.md
│ ├── babel.config.js
│ ├── index.js
│ ├── jest.config.js
│ ├── lib
│ │ ├── app.js
│ │ └── db.js
│ ├── package-lock.json
│ ├── package.json
│ └── tests
│ ├── rbac.test.js
│ └── setup
│ ├── env-wrapper.js
│ ├── environment.js
│ └── transformer-wrapper.js
├── babel.config.js
├── common
│ └── models
│ ├── foo.js
│ └── index.js
├── jsconfig.json
├── package-lock.json
└── package.json
Обычно в корне есть несколько других проектов и несколько других подпапок в common/
, но я уменьшил его, чтобы изолировать проблему.
jest.config.js:
const path = require('path')
require('@babel/register', {
//needed to transform files outside cwd
ignore: [/node_modules/i]
})
module.exports = {
testEnvironment: '<rootDir>/tests/setup/environment.js',
transform: {
'^.+\\.[jt]sx?$': '<rootDir>/tests/setup/transformer-wrapper.js',
}
}
Для настройки моей среды требуется api/lib/db.js
, чтобы настроить базы данных для тестирования. В свою очередь, api/lib/db.js
импортирует common/models/index.js
(из родительского каталога). (babel-plugin-module-resolver
в api/babel.config.js
обрабатывает путь разрешения). Я попробовал несколько комбинаций @babel/register
и обёртывание окружения и почти все, что мог придумать.
Соответствующие файлы:
Тесты / установки / environment.js
const NodeEnvironment = require('jest-environment-node')
// This imports DB from lib, which then imports
// {foo} from 'models' which is in common
// but foo does not get transpiled
const DB = require('../../lib/db').default
....
Когда я запускаю cd api && npm run test
, я получаю эту ошибку:
FAIL tests/rbac.test.js
● Test suite failed to run
/Users/jd/Projects/jest-babel-have-mercy-on-my-soul/common/models/index.js:3
export * from './foo'
^^^^^^
SyntaxError: Unexpected token export
1 |
> 2 | import {foo} from 'models'
| ^
3 |
4 | export default {foo}
5 |
at Module._compile (../node_modules/pirates/lib/index.js:99:24)
at Object.<anonymous> (lib/db.js:2:1)
Шаги воспроизведения:
git clone git@github.com:JonDum/jest-babel-have-mercy-on-my-soul.git fml
cd fml
npm install
cd api
npm install
npm run test
Если у кого-то есть идеи, я буду искренне благодарен. Я бился головой об это часами.
Исследование:
https://github.com/facebook/jest/issues/7359
https://github.com/babel/babel/issues/8321
Невозможно использовать Babel 7 с Jest
https://github.com/facebook/jest/issues/5164#issuecomment-366139663