linno
侠客
侠客
  • 最后登录2020-03-24
  • 发帖数6
阅读:8531回复:1

[vue]使用VUE中遇到的坑

楼主#
更多 发布于:2018-10-22 18:46

1:can't not find 'xxModule' - 找不到某些依赖或者模块
这种情况一般报错信息可以看到是哪个包抛出的信息.
一般卸载这个模块,安装重新安装下即可.

2:给组件内的原生控件添加事件不生效
<!--比如用了第三方框架,或者一些封装的内置组件; 然后想绑定事件-->

<!--// 错误例子1-->
<el-input placeholder="请输入特定消费金额 " @mouseover="test()"></el-input>
<!--// 错误例子2-->
<router-link :to="item.menuUrl" @click="toggleName=''">
<i :class="['fzicon',item.menuIcon]"></i> <span>pw_item.menuName</span>
</router-link>
<!--上面的两个例子都没法触发事件!!!--> <!--究其原因,少了一个修饰符 .native--> <router-link :to="item.menuUrl" @click.native="toggleName=''">
<i :class="['fzicon',item.menuIcon]"></i> <span>pw_item.menuName</span> </router-link>
<!--https://cn.vuejs.org/v2/guide/components.html#给组件绑定原生事件-->

3:Component template shold contain exactly one root element.If you are useing v-if on multiple elements , xxxxx
大体就是说,单组件渲染 DOM 区域必须要有一个根元素,不能出现同级元素.
可以用v-if和v-else-if指令来控制其他元素达到并存的状态

换个直白的解释,就是有一个唯一的父类,包裹者;
比如一个 div(父包含块) 内部多少个同级或者嵌套都行,但是最外层元素不能出现同级元素!!!!


4:我需要遍历的数组值更新了,值也赋值了,为什么视图不更新!!!

那是因为有局限性,官方文档也说的很清楚,只有一些魔改的之后的方法提供跟原生一样的使用姿势(却又可以触发视图更新);
一般我们更常用(除了魔改方法)的手段是使用:this.$set(obj,item,value);

传送门:数组更新检测(触发视图更新)

5:Uncaught ReferenceError: xxx is not define
  • 实例内的 data 对应的变量没有声明,你导入模块报这个错误,那绝逼是导出没写好
6:CSSbackground引入图片打包后,访问路径错误
  • 因为打包后图片是在根目录下,你用相对路径肯定报错啊....
    你可以魔改 webpack 的配置文件里面的static为./static...但是不建议
    你若是把图片什么丢到assets目录下,然后相对路径,打包后是正常的
7: axios的 post 请求后台接受不到!
  • axios默认是 json 格式提交,确认后台是否做了对应的支持;
    若是只能接受传统的表单序列化,就需要自己写一个转义的方法...
    当然还有一个更加省事的方案,装一个小模块qs
     npm install qs -S // 然后在对应的地方转就行了..单一请求也行,拦截器也行...我是写在拦截器的. // 具体可以看看我 axios 封装那篇文章 //POST传参序列化(添加请求拦截器)
    Axios.interceptors.request.use( config => { // 在发送请求之前做某件事 if (
          config.method === "post"
        ) { // 序列化
          config.data = qs.stringify(config.data); // ***** 这里转义
        } // 若是有做鉴权token , 就给头部带上token if (localStorage.token) {
          config.headers.Authorization = localStorage.token;
        } return config;
      },
      error => {
        Message({ //  饿了么的消息弹窗组件,类似toast
          showClose: true, message: error, type: "error.data.error.message"
        }); return Promise.reject(error.data.error.message);
      }
    );
8:Invalid prop: type check failed for prop "xxx". Expected Boolean, got String.
  • 这种问题一般就是组件内的 props 类型已经设置了接受的范围类型,



9: ERROR in static/js/xxxxxxx.js from UglifyJs
  • 我知道其中一种情况会报这种情况,就是你引入的 js,是直接引入压缩版本后的 js(xxx.min.js);
    然后 webpack 内又启用了 UglifyJs(压缩 JS的), 二重压缩大多都会报错!!
    解决方案:引入标准未压缩的 JS
10:Failed to compile with x errors : This dependency was not found !
  • 编译错误,对应的依赖没找到!!!
    解决如下:知道缺少对应的模块,直接装进去
  • 若是一个你已经安装的大模块(比如 axios)里面的子模块(依赖包)出了问题,卸载重装整个大模块.因为你补全不一定有用!

最新喜欢:

doubleyongdouble...
doubleyong
管理员
管理员
  • 最后登录2025-12-02
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
沙发#
发布于:2018-10-23 10:13
哈哈,好多bug, I like.
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号