Node v13 / Jest / ES6 - встроенная поддержка модулей без babel или esm - PullRequest
3 голосов
/ 24 февраля 2020

Можно ли протестировать модули ES6 с Jest без esm или babel? Поскольку node v13 изначально поддерживает es6, попытался:

//package.json
{
  …
  "type": "module"
  …
}



//__tests__/a.js
import Foo from '../src/Foo.js';


$ npx jest

Jest encountered an unexpected token
…
Details:

/home/node/xxx/__tests__/a.js:1
import Foo from '../src/Foo.js';
^^^^^^

SyntaxError: Cannot use import statement outside a module

Когда в babel добавлен транспортер, он работает, но могут ли модули es6 также использоваться изначально?

1 Ответ

1 голос
/ 07 мая 2020

Да, это возможно от jest@25.4.0. В этой версии имеется встроенная поддержка esm, поэтому вам больше не придется переносить код с помощью babel.

Это еще не задокументировано, но согласно этой проблеме вам придется Для этого сделайте 3 простых шага ( На момент написания этого ответа ):

  • Убедитесь, что вы не преобразуете import утверждений, установив transform: {} в ваш файл конфигурации jest
  • Запустите node@^12.16.0 || >=13.2.0 с --experimental-vm-modules flag
  • Запустите тест с jest-environment-node или jest-environment-jsdom-sixteen.

Итак, ваш jest config файл должен содержать как минимум это:

export default {
    testEnvironment: 'jest-environment-node',
    transform: {}
    ...
};

И чтобы установить флаг --experimental-vm-modules, вам нужно будет запустить Jest с package.json следующим образом ( Я надеюсь, что это изменится в будущем ):

"scripts": {
    node --experimental-vm-modules node_modules/jest/bin/jest.js
}

Надеюсь, этот ответ был вам полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...