Estoy tratando de migrar un monorepo NX de Angular 12 a Angular 13. Como parte de esta migración, Jest también se actualiza a la versión 27.2.3. el proyecto también utiliza una compilación de editor personalizado de CKEditor5.
Cuando CKEditor se integró por primera vez (creo que cuando el proyecto usaba Angular 9) tuvimos muchos problemas para que funcionara con Jest y cada vez que se ejecutaban las pruebas unitarias, cualquier componente que incluía CKEditor daba el mensaje de error:
SyntaxError: no se puede usar la declaración de importación fuera de un módulo
Logramos solucionar el problema agregando la siguiente configuración al archivo global jest.preset.js en la raíz del proyecto:
transform: { 'node_modules[\\\\/]@ckeditor.+.(js)$': 'babel-jest', '^.+.(ts|html)$': 'ts-jest', }, transformIgnorePatterns: ['/node_modules/(?!@ckeditor|lodash).+.(js|jsx|ts|tsx|svg)$'],Sin embargo, ahora que estamos migrando de Angular 12 a 13, el mensaje de error anterior ha regresado y parece que la configuración anterior ahora se ignora.
Como parte de la migración, NX ha creado automáticamente nuevos archivos project.json en todas las bibliotecas del monorepo. Este archivo contiene alguna configuración de Jest, por lo que intenté mover la configuración anterior del archivo jest.preset.js a los archivos individuales de project.json en cualquier biblioteca usando CKEditor, pero esto no solucionó el problema. Los nuevos archivos project.json también leen algunas configuraciones de Jest de un jest.config.js específico del proyecto, así que intenté agregar la configuración allí también, y eso tampoco solucionó el problema.
También intenté actualizar la configuración de testEnviroment en package.json de "node" a "jsdom" y esto tampoco ayudó. También intenté mover toda la configuración de transform/transformIgnorePatterns a la sección Jest de package.json y eso tampoco ayudó.
Supongo que mi configuración de trabajo anterior solo necesita moverse a un archivo diferente, simplemente no está claro a qué archivo debe moverse.
Mi entorno es el siguiente:
ventanas 10
Nodo 16.13.2
MNP 8.1.2
NX 13.4.5
broma 27.2.3
Angular 13.1.2
Esto se solucionó agregando la siguiente configuración al archivo preestablecido de Jest y eliminando la misma configuración de las configuraciones de aplicaciones/libs individuales:
transform: { 'node_modules[\\\\/]@ckeditor.+\\.(js)$': 'babel-jest', '^.+\\.(ts|js|mjs|html|svg)$': 'jest-preset-angular', }, transformIgnorePatterns: ['node_modules/(?!.*.mjs$|@ckeditor)'], El problema estaba relacionado con tener múltiples cadenas dentro de transformIgnorePatterns : solo admite un elemento a pesar de ser una matriz