1. 环境
Vue 2.6.12+ElementUI 2.15.0 +@riophae/vue-treeselect 0.4.0+bpmnjs8.8.1+bpmn-js-properties-panel0.46.0+activiti7.1.0.M4
2. 问题描述
基础流程跟踪预览组件Process-Viewer时,打开组件页面不显示流程图,报错信息如下:
TypeError: Cannot read properties of undefined (reading 'base')
at Canvas.getLayer (Canvas.js:249:27)
at Canvas.getDefaultLayer (Canvas.js:225:15)
at Canvas.setRootElement (Canvas.js:457:20)
at BpmnImporter.add (BpmnImporter.js:108:18)
at Object.root (Importer.js:56:25)
at visitRoot (BpmnTreeWalker.js:83:20)
at Object.handleDefinitions (BpmnTreeWalker.js:215:15)
at render (Importer.js:72:12)
at eval (Importer.js:83:7)
at new Promise (<anonymous>)
3. 原因分析
经对组件源码分析,发现其配置的watch方法中,使用了immediate: true,而如果watch 加了 immediate: true, 就是watch先执行,否则就是created 先执行。而组件第一次加载时,bpmnViewer还未初始化,导致执行importXml时报错
4. 解决办法
去掉watch中的immediate: true