结论:ECharts版本太高可能导致这个报错
依赖
查看函数调用栈
调试代码
resizeObserver.js
在使用ResizeObserver
对象的dsconnect方法时提示的错误
可以看见在执行这里时sensor等于undefined,意思是执行到destroy的时候还没有执行bind,所以导致的错误,继续往上层找
sensorPool里面调用的destroy,但是没有看到bind,继续往上层找
在上一层的index文件里面找到导出bind的地方,看是哪里引用的,继续往外层找
在core.js文件里面看见导入的index
分析
可以知道在EchartsReact组件卸载的时候会调用dispose,这时会判断有没有echartsElement,有的话就调用clear方法
这个echartsElement是从哪里来的呢?
在组件render的时候产生的
这里去查看源码 知道了echartsLib是echarts导出
经过调试发现下面这行执行完后触发了componentWillUnmount
然后执行了dispose(),相当于还没渲染完成就卸载了
为什么还没渲染完成就卸载组件了?这就是导致报错的原因
既然是在echats获取实例的时候报错了,这很大程度可能是因为echats内部导致的报错
查看echarts-for-react的packagse.json包
发现echarts-for-react 2.x版本只支持到4.x版本
但是在本地项目中安装了5.x版本
版本冲突导致的问题!
在npm install的时候也提示了
总结
发现项目内部依赖报错时,需要先检查一下依赖包依赖的外部包版本(peerDependencies)是否安装正确
如果有sourcemap可以很好看见打包没有压缩的代码,直接在浏览器上进行断点调试更为方便