$listeners is readonly. $attrs is readonly. 报错

5,579 阅读1分钟

问题背景

在一次vue项目中,需要使用vue的一个插件vue-awesome-swiper,但是在安装完依赖后npm install swiper vue-awesome-swiper --save,代码使用上完全按照示例代码来,swiper的功能其实也正常,但控制台有一大片飘红,而且会很多

其中主要是[Vue warn]: $attrs is readonly.[Vue warn]: $listeners is readonly.两类报错

解决过程

方法一:

首先去了GitHub仓库看了issue好像没人提过🙁,度娘了下,大部分说的是vuevue-template-compiler版本不一致导致的,但是我又看了我的package.json

二者的版本都是2.6.10,我开始重新安装了一次vuevue-template-compiler,发现还是有报错😞

方法二:

想起版本问题,我又回溯了一次整个项目安装依赖的过程,由于公司网络不稳定,项目起先依赖的时候都是cnpm方式,再次尝试把整个/node_modules都删除后,全部依赖都用npm方式安装,项目再次运行后,没有报错了,功能也都正常✌

个人小结:

$attrs is readonly.类似这种错误,应该是vue版本问题导致的,在后加入的依赖vue-awesome-swiper在使用npm安装后,在vue-awesome-swiper组件初始化渲染时,attr属性和事件挂载的时候都有点问题,所以需注意使用cnpm安装的依赖版本问题