Tengo un componente Vue JS que usa el paquete mxgraph : https://www.npmjs.com/package/mxgraph
y lo importa así:
import * as mxgraph from 'mxgraph'; const { mxClient, mxStackLayout, mxGraph, mxRubberband, mxUtils, mxFastOrganicLayout, mxSwimlaneLayout, mxEvent, mxGraphModel, mxConstants, mxHierarchicalLayout, mxSwimlaneManager } = mxgraph(); // noinspection TypeScriptCheckImport import { mxConstants as MxConstants } from 'mxgraph/javascript/mxClient.js' import axios from 'axios';Este es mi jest.config.js
module.exports = { preset: "@vue/cli-plugin-unit-jest/presets/no-babel", moduleFileExtensions: ["js", "ts", "json", "vue"], transform: { ".*\\.(vue)$": "vue-jest", "^.+\\.tsx?$": "ts-jest" }, globals: { "ts-jest": { tsConfig: "src/tsconfig.json" } } };Cuando ejecuto mis pruebas obtengo:
TypeError: mxgraph is not a function 20 | import * as mxgraph from 'mxgraph'; 21 | > 22 | const { | ^ 23 | mxClient, 24 | mxStackLayout, 25 | mxGraph, at src/components/task/job/job_pipeline_mxgraph.vue:22:1 at Object.<anonymous> (src/components/task/job/job_pipeline_mxgraph.vue:568:3) at src/components/task/job/task_template_wizard_creation/step_attach_directories_task_template.vue:67:1 at Object.<anonymous> (src/components/task/job/task_template_wizard_creation/step_attach_directories_task_template.vue:367:3) at Object.<anonymous> (tests/unit/task/job/task_template_wizard_creation/step_attach_directories_task_template.spec.js:3:1)La importación funciona bien cuando ejecuto mi aplicación usando mis archivos de configuración de paquetes web normales. ¿Hay algo que deba agregar a mi jest.config para corregir este error?
El paquete mxGraph npm siempre ha sido un desastre.
Tenga en cuenta que maxGraph , el sucesor de mxGraph, lo manejará: https://github.com/maxGraph/maxGraph
Como está usando Vue y su fragmento indica que está usando TypeScript, le sugiero que use https://github.com/typed-mxgraph/typed-mxgraph . Obtendrá tipos de TypeScript y una solución completamente funcional para la integración de mxGraph npm. El README proporciona ejemplos de uso completos y también hay demostraciones disponibles. Cuando use mxGraph en la prueba jest, según las partes de mxGraph que esté ejecutando, deberá usar el entorno jsdom en las pruebas relacionadas. Esto se debe a que mxGraph usa el objeto de window , que no está disponible con el entorno de node .
Si aún desea mantener el método js para la integración de mxGraph, puede consultar https://github.com/jgraph/mxgraph/issues/175#issuecomment-482008896 u otras preguntas de desbordamiento de pila (son muchas) .