Here are some different ways on how to set up Jest to support ESM. This applies for Jest v25, Node v13, and Babel v7.
Add babel-jest.
yarn add --dev @babel/core @babel/plugin-transform-modules-commonjs babel-jestConfigure Babel. We'll use env.test here so not to interfere with your build process.
// babel.config.js
module.exports = {
env: {
test: {
plugins: ["@babel/plugin-transform-modules-commonjs"]
}
}
};Configure Jest:
// jest.config.js
module.exports = {
"transform": {
"^.+\\.[t|j]sx?$": "babel-jest"
},
};You're done.
Add jest-esm-transformer - this is a preset configuration of Babel to support ESM transpilation.
yarn add --dev jest-esm-transformerConfigure Jest.
// jest.config.js
module.exports = {
"transform": {
"\\.m?jsx?$": "jest-esm-transformer"
},
};You're done.
As of March 2020, using esm is currently not possible. Follow these threads for details.
See buble-jest.