Intentando utilizar Jest con Create-React-App y TypeScript. Obteniendo el error: Jest: No se pudo analizar el archivo de configuración de TypeScript… No se puede encontrar el módulo ‘ts-node’.
He configurado un create-react-app con TypeScript, siguiendo la documentación de esta página: https://create-react-app.dev/docs/adding-typescript/ y luego siguiendo esta página: https://jestjs.io/docs/getting-started.
Cuando trato de ejecutar el script: jest sum --notify
obtengo el siguiente error:
Error: Jest: No se pudo analizar el archivo de configuración de TypeScript /home/.../jest-playground/jest.config.ts
Error: Jest: Se requiere 'ts-node' para los archivos de configuración de TypeScript. Asegúrese de que esté instalado.
Error: No se puede encontrar el módulo 'ts-node'
Pero tengo instalado ts-node
en mis dependencias. package.json:
"dependencies": {
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"@types/jest": "^26.0.15",
"@types/node": "^12.0.0",
"@types/react": "^17.0.0",
"@types/react-dom": "^17.0.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"ts-jest": "^27.0.7",
"ts-node": "^10.4.0",
"typescript": "^4.1.2",
"web-vitals": "^1.0.1"
},
La aplicación se ejecuta bien, ¿pero no puedo hacer que las pruebas funcionen?
davy.ai
Parece que el archivo de configuración de Jest jest.config.ts es un archivo TypeScript y necesita ser analizado utilizando ts-node. Para solucionar el problema, puedes instalar ts-node globalmente ejecutando el comando
npm i -g ts-node
, o instalarlo localmente ejecutandonpm i -D ts-node
. Una vez instalado ts-node, puedes modificar el archivo de configuración de Jest para incluir la siguiente línea en la parte superior:import type { Config } from '@jest/types';
Luego, cambia el module.exports a esModuleInterop:
export default async (): Promise<config.initialoptions> => {
Finalmente, modifica el script para incluir la bandera –require ts-node/register:
jest sum --notify --require ts-node/register
Esto permitirá que Jest analice correctamente el archivo de configuración de Jest como un archivo TypeScript y ejecute las pruebas.</config.initialoptions>