Tener una configuración exitosa de jest/esm, sin embargo, ocasionalmente se lanza un módulo que especifica una clave main (para commonjs) y una clave de module (para ESM) en su package.json . Esto conduce a errores de broma, por ejemplo con el módulo uuid :
/repo/path/node_modules/uuid/dist/esm-browser/index.js:1 ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){export { default as v1 } from './v1.js'; ^^^^^^ SyntaxError: Unexpected token 'export' Puedo ver que dist/esm-browser/index.js es el archivo especificado por la clave del module en package.json .
¿Cómo se puede configurar Jest con ESM para manejar estos casos, donde las cosas en node_modules son ESM?
Configuración de broma:
{ "resetMocks": true, "testEnvironment": "jsdom", "testMatch": [ "**/src/**/*.(spec|test).[tj]s?(x)" ], "preset": "ts-jest/presets/default-esm", "extensionsToTreatAsEsm": [ ".ts", ".tsx" ], "globals": { "ts-jest": { "useESM": true } }, "globalSetup": "<rootDir>/jest/setup.cjs", "globalTeardown": "<rootDir>/jest/teardown.cjs", "watchPathIgnorePatterns": [ "<rootDir>/.tmp" ], "moduleNameMapper": { "^~/(.*)$": "<rootDir>/src/$1", "^~components/(.*)$": "<rootDir>/src/components/$1", "^~util/(.*)$": "<rootDir>/src/util/$1", "^~types/(.*)$": "<rootDir>/src/types/$1" } }Tuve el mismo problema y se solucionó de la misma manera que se menciona en este comentario: https://github.com/nrwl/nx/issues/812#issuecomment-429420861 en mi jest.config.js :
// list to add ESM to ignore const esModules = ['uuid'].join('|'); // ... module.exports = { //... transformIgnorePatterns: [`/node_modules/(?!${esModules})`], // ... };