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.

[Error]: No se puede encontrar el módulo ‘@ngrx/effects/testing’ después de las actualizaciones de versión.

He migrado el proyecto de la versión 25 a la 27 y el módulo ‘@ngrx/effects/testing’ ya no se puede encontrar. En mi caso, el baseUrl en el proyecto está configurado en ‘./src’. En otros proyectos con baseUrl ‘.’ y con el mismo jest, angular, ngrx, las pruebas se ejecutan sin problemas. ¿Quizás se requiere alguna configuración adicional para jest?

Este es el mensaje que recibo:

Cannot find module '@ngrx/store/testing' from 'src/app/app.component.spec.ts'.

Algunas dependencias del archivo package.json:

"dependencies": {
    "@angular/animations": "13.0.2",
    "@angular/common": "13.0.2",
    "@angular/core": "13.0.2",
    "@angular/forms": "13.0.2",
    "@angular/localize": "^13.0.2",
    "@angular/platform-browser": "13.0.2",
        ...
    "@ngrx/effects": "13.0.1",
    "@ngrx/entity": "13.0.1",
    "@ngrx/store": "13.0.1",
}
"devDependencies": {
 "@types/jest": "27.0.3",
   "jest": "^27.4.3",
    "jest-junit": "13.0.0",
    "jest-marbles": "3.0.1",
    "jest-preset-angular": "^11.0.1",
      ...
}


El baseUrl está configurado en "./src" en el archivo tsconfig.json.

{
“compileOnSave”: false,
“compilerOptions”: {
“skipLibCheck”: true,
“resolveJsonModule”: true,
“baseUrl”: “./src”,
“outDir”: “./dist/out-tsc”,
“sourceMap”: true,
“declaration”: false,
“downlevelIteration”: true,
“experimentalDecorators”: true,
“moduleResolution”: “node”,
“importHelpers”: true,
“target”: “es2015”,
“module”: “es2020”,
“esModuleInterop”: true,
“lib”: [
“es2018”,
“dom”
]
}
}

Aquí está la configuración de jest:

"jest": {
"preset": "jest-preset-angular",
"setupFilesAfterEnv": [
"<rootdir>/setupJest.ts"
],
"moduleDirectories": [
"node_modules",
"src"
]
}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar relacionado con el proceso de resolución de módulos de Jest. Desde que se cambió la baseUrl de “.” a “./src”, Jest podría no ser capaz de localizar el módulo ‘@ngrx/store/testing’ correctamente. Para solucionar este problema, puedes intentar los siguientes pasos:

    1. Actualiza la configuración de Jest para incluir el parámetro baseUrl en el campo resolver. Esto se puede hacer añadiendo el siguiente fragmento de código:
    "jest": {
        ...
        "moduleNameMapper": {
            "^@ngrx/(.*)$": "<rootdir>/src/app/$1",
        },
        "resolver": "@nrwl/jest/plugins/resolver",
        "resolver": "jest-ts-webcompat-resolver",
        "globals": {
            ...
        },
    }
    
    1. Además, agrega lo siguiente en el archivo tsconfig.app.json:
    "include": [
        "src/**/*.ts",
        "src/polyfills.ts"
    ],
    "compilerOptions": {
        ...
        "baseUrl": "./src",
        "moduleResolution": "node"
    }
    

    Al incluir estos pasos, Jest debería ser capaz de resolver el módulo sin problemas.

Comments are closed.