es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for 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 ejecutando npm 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>

Comments are closed.