Estoy implementando pruebas en un proyecto existente que actualmente no tiene pruebas. Mis pruebas no logran compilar node_modules/ imports.
/Users/me/myproject/node_modules/lodash-es/lodash.js:10 export { default as add } from './add.js'; ^^^^^^ SyntaxError: Unexpected token export at transformAndBuildScript (node_modules/jest-runtime/build/transform.js:320:12) at Object.<anonymous> (app/reducers/kind_reducer.js:2:43) at Object.<anonymous> (app/reducers/index.js:12:47) La solución que encontré es 'lista blanca' node_modules en package.json jest config de esta manera:
"jest": { "transformIgnorePatterns": [ "!node_modules/" ] } Esto parece un truco porque lleva más de 1 minuto ejecutar una prueba simple que importa node_modules/lodash-es/lodash.js .
Si ninguna de las soluciones anteriores funcionó para usted, puede probar esto en su broma
"moduleNameMapper": { "^lodash-es$": "lodash" } Reemplazará lodash-es con la versión commonjs durante el tiempo de ejecución de prueba.
Tuve que agregar esto en mi .jestconfig :
"transformIgnorePatterns": [ "<rootDir>/node_modules/(?!lodash-es)" ]Publicando una respuesta más completa aquí:
Jest por defecto no transforma node_modules porque node_modules es enorme. La mayoría de los módulos de nodo están empaquetados para exponer el código ES5 porque se puede ejecutar sin ninguna transformación adicional (y en gran parte es compatible con versiones anteriores).
En su caso, lodash-es expone específicamente los módulos ES, que Jest deberá compilar a través de babel.
Puede intentar reducir su lista blanca para que Jest no intente pasar todos los archivos JavaScript dentro de node_modules a través de babel.
Creo que la configuración correcta en tu caso es:
"jest": { "transformIgnorePatterns": [ "/!node_modules\\/lodash-es/" ] }