1、安装一些需要编译的包:提示没有安装python、build失败等

  因为一些 npm 的包安装需要编译的环境,maclinux 都还好,大多都齐全 。window 用户依赖 visual studio 的一些库python 2+,windows的小伙伴都装上:

windows-build-tools

python 2.x

2、can't not find 'xxModule' - 找不到某些依赖或者模块

  这种情况一般报错信息可以看到是哪个包抛出的信息。一般卸载这个模块,安装重新安装下即可。

3、data functions should return an object

  这个问题是 Vue 实例内,单组件的data必须返回一个对象。

  为什么要 return 一个数据对象呢?

  官方解释如下: data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!简言之,组件复用下,不会造成数据同时指向一处,造出牵一发而动全身的破问题。

4、给组件内的原生控件添加事件不生效

<!--比如用了第三方框架,或者一些封装的内置组件; 然后想绑定事件-->
<!--// 错误例子1-->
<el-input placeholder="请输入特定消费金额 " @mouseover="test()"></el-input> <!--// 错误例子2-->
<router-link :to="item.menuUrl" @click="toggleName=''">
<i :class="['fzicon',item.menuIcon]"></i>
<span>{{item.menuName}}</span>
</router-link> <!--上面的两个例子都没法触发事件!!!-->
<!--究其原因,少了一个修饰符 .native-->
<router-link :to="item.menuUrl" @click.native="toggleName=''">
<i :class="['fzicon',item.menuIcon]"></i>
<span>{{item.menuName}}</span>
</router-link> <!--明明官方文档有的,一堆人不愿意去看-->
<!--https://cn.vuejs.org/v2/guide/components.html#给组件绑定原生事件-->

5、在函数内用了this.xxx=,为什么抛出Cannot set property 'xxx' of undefined;

  需要this重定向

  这又是this的套路了,this是和当前运行的上下文绑定的。一般你在axios或者其他 promise , 或者setInterval 这些默认都是指向最外层的全局钩子。简单点说:“最外层的上下文就是 window,vue内则是 Vue 对象而不是实例!”;

  解决方案:

  (1)暂存法:函数内先缓存 this , let that = this;(let是 es6, es5用 var)

  (2)箭头函数:会强行关联当前运行区域为 this 的上下文

6、为什么我的引入的小图片渲染出来却是 data:image/png;base64xxxxxxxx

  这个是 webpack 里面的对应插件处理的。对于小于多少 K 以下的图片(规定的格式)直接转为 base64格式渲染;具体配置在webpack.base.conf.js里面的 rules里面的 url-loader。这样做的好处:在网速不好的时候先于内容加载和减少http的请求次数来减少网站服务器的负担。

7、Component template shold contain exactly one root element.If you are useing v-if on multiple elements , xxxxx

  大体就是说,单组件渲染 DOM 区域必须要有一个根元素,不能出现同级元素。可以用v-ifv-else-if指令来控制其他元素达到并存的状态。

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

8、跨域问题怎么破!比如No 'Access-Control-Allow-Origin' header is present on the requested resource.

  这种问题老生常谈了,我就不细说了,大体说一下:

  (1)CORS ,前后端都要对应去配置,IE10+

  (2)nginx 反向代理,一劳永逸,线上环境可以用这个

  线下开发模式,比如你用了vue-cli,里面的 webpack 有引入了proxyTable这么个玩意,也可做接口反向代理

// 在 config 目录下的index.js
proxyTable: {
"/bp-api": {
target: "http://new.d.st.cn",
changeOrigin: true,
// pathRewrite: {
// "^/bp-api": "/"
// }
}
}
// target : 就是 api 的代理的实际路径
// changeOrigin: 就是是变源,必须是...
// pathRewrite : 就是路径重定向,一看就知道

9、为什么我的组件间的样式不能继承或者覆写?

  单组件开发模式下,请确认是否开启了 CSS模块化功能。也就是scoped(vue-cli 里面配置了,只要加入这个属性就自动启用)

<style lang="scss" scoped></style>

  为什么不能继承或者覆写呢,那时因为每个类或者 id 乃至标签都会给自动在css后面添加hash。比如

// 写的时候是这个
.trangle{}
// 编译过后,加上了 hash
.trangle[data-v-1ec35ffc]{}

  这些都是在 css-loader 里面配置。

10、路由模式改为history后,除了首次启动首页没报错,刷新访问路由都报错。

  必须给对应的服务端配置查询的主页面,也可以认为是主路由入口的引导。

  官方文档也有:传送门 : Vue-Router history Mode

11、Uncaught ReferenceError: xxx is not define

  实例内的 data 对应的变量没有声明,你导入模块报这个错误,那绝对是导出没写好,按着导出导入的一个一个去找,绝对能找到问题。

12、Error in render function:"Type Error: Cannot read property 'xxx' of undefined"

  这种问题大多都是初始化的姿势不对;比如引入echart这些,仔细去了解下生命周期,再来具体初始化。

  vue 组件有时候也会(嵌套组件或者 props传递初始化),也是基本这个问题

13、安装模块时命令窗口输出unsupported platform xxx

  一般两种情况,node版本不兼容,系统不兼容。解决方案: 要么不装,要么满足安装要求。

14、Unexpected tab charater这些

  一般是你用脚手架初始化的时候开了 eslint ,要么遵循规则,要么改变规则;要么直接把 webpack 里面的 eslint 检测给关闭了。

15、Failed to mount component: template or render function not defined

  组件挂载失败,问题只有这么几个:组件没有正确引入、挂载点顺序错了了;自行动手排查。

16、Unknown custom element: <xxx> - did you register the component correctly?

  组件没有正确引入或者正确使用,依次确认:

  (1)导入对应的组件

  (2)在 components 内声明

  (3)在 dom 区域声明标签

17、axiospost 请求后台接受不到

  axios默认是 json 格式提交,确认后台是否做了对应的支持。

  若是只能接受传统的表单序列化,就需要自己写一个转义的方法。当然还有一个更加省事的方案,装一个小模块qs

//安装
npm install qs -S // 然后在对应的地方转就行了,单一请求也行,拦截器也行,我是写在拦截器的。
//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({
showClose: true,
message: error,
type: "error.data.error.message"
});
return Promise.reject(error.data.error.message);
}
);

18、Invalid prop: type check failed for prop "xxx". Expected Boolean, got String.

  这种问题一般就是组件内的 props 类型已经设置了接受的范围类型, 而你传递的值却又不是它需要的类型,写代码严谨些。

19、this.$set | this.$xxx 这个 $ 是个什么意思

  Vue 的$和 jQuery 的$并没有半毛钱的关系,就跟javascriptjava一样。

  Vue 的$是封装了一些 vue 的内建函数,然后导出以$开头,这显然并不是 jQuery的专利。

  jQuery 的$是选择器,取得 DOM区域。两者的作用完全不一致。

20、Module not found: Error : Can’t resolve xxx-loader in xxxx

  这里问题一般就是webpack的配置文件你改动了或对应的 loader 没有装上

21、父组件可以直接调用子组件的方法么!

  可以,通过$refs或者$chilren来拿到对应的实例,从而操作。

22、Error in event handler for "click":"xxx"

  这个问题大多都是你写的代码有问题,你的事件触发了,但是组件内部缺少对应的实现或者变量,所以抛出事件错误。解决方案:看着报错慢慢排查

23、组件的通讯有哪几种?

  基本最常用的是这三种;

  (1)父传子: props

  (2)子传父: emit

  (3)兄弟通讯:

  1>event bus: 就是找一个中间组件来作为信息传递中介

  2>vuex: 信息树

  传送门:

基本通讯

Vuex

24、既然localStoragesessionStorage能做到数据维护,为什么还要引入vuex!

  这个问题问得好,Vuex的目的用来维护同级组件间的数据通讯,拥有一个共同的状态树;仅仅活在SPA的里面的伪多页(路由)内,这种东东明明然localStoragesessionStorage 也可以做到,还能做到跨页面数据维护,还不会被浏览器刷新干掉。为什么还要引入 vuex,我个人觉得原因只有这么一个,“可维护性”和”易用性”,

怎么理解呢?

  (1)可维护性:因为是单向数据流,所有状态是有迹可循的,数据的传递也可以及时分发响应

  (2)易用性:它使得我们组件间的通讯变得更强大,而不用借助中间件这类来实现不同组件间的通讯

  而且代码量不多,若是你要用 ls或者ss,你必须手动去跟踪维护你的状态表,虽说可行,但是代码量会多很多,而且可读性很差。

  是不是每个项目都需要用到vuex?

  答案是否定的,小型项目上这个反而是累赘,这东西一般是用在中型项目+的,因为里面涉及需要维护的数据比较多,同级组件间的通讯比较频繁。若是用到vuex的项目记得结合ss或者ls来达到某些状态持久化,为什么看下面!

25、vuex的用户信息为什么还要存一遍在浏览器里(sessionStorage or localStorage)

  因为 vuex的 store 干不过刷新啊,保存在浏览器的缓存内,若用户刷新的话,值再取一遍呗。

26、npm run dev 报端口错误:Error: listen EADDRINUSE :::8080

  自己用 webpack搭脚手架的都不用我说了,Vue-cli 里面的 webpack 配置: config/index.js

dev: {
env: require("./dev.env"),
port: , // 这里,若是这个端口已经给系统的其他程序占用了,需要改掉
autoOpenBrowser: true,
assetsSubDirectory: "static",
assetsPublicPath: "/",
proxyTable: {
"/bp-api": {
target: "http://new.d.st.cn",
changeOrigin: true,
// pathRewrite: {
// "^/bp-api": "/"
// }
}
},

  原因:8080端口被占用,不轻易关闭被占用的端口,将index.js文件中的port改为其他的端口号即可

  在一个就是如果你的host是采用ip形式写的话,那么你就要看下你电脑的ip是不是一致的

27、什么时候用v-if,什么时候用 v-show!

  我们先来说说两者的核心差异:

  v-if:DOM 区域没有生成,没有插入文档,等条件成立的时候才动态插入到页面。

  有些需要遍历的数组对象或者值,最好用这货控制,等到拿到值才处理遍历,不然一些操作过快的情况会报错,比如数据还没请求到。

  v-show:DOM 区域在组件渲染的时候同时渲染了,只是单纯用 css 隐藏了。

  对于下拉菜单、折叠菜单这些数据基本不怎么变动,用这个最合适了,而且可以改善用户体验,因为它不会导致页面的重绘,DOM 操作会。

  简言之:DOM结构不怎么变化的用v-show,数据需要改动很大或者布局改动的用v-if。

28、单组件中里面的 import xxx from '@/components/layout/xxx'中的@是什么意思?

  这是 webpack 方面的知识,看到了也说下吧。webpack可以配置alias(也就是路径别名),玩过 linux 或者 mac 都知道,依旧如上,会自己搭脚手架的不用我说了,看看 vue-cli 里面的,文件名: build -> webpack.base.conf.js

resolve: {
extensions: [".js", ".vue", ".json"], // 可以导入的时候忽略的拓展名范围
alias: {
vue$: "vue/dist/vue.esm.js",
"@": resolve("src"), // 这里就是别名了,比如@就代表直接从/src 下开始找起!!!
"~": resolve("src/components")
}
},

29、Failed to compile with x errors : This dependency was not found !

  编译错误,对应的依赖没找到。

  解决如下:

  (1)知道缺少对应的模块,直接装进去

  (2)若是一个你已经安装的大模块(比如 axios)里面的子模块(依赖包)出了问题,卸载重装整个大模块。因为你补全不一定有用。

30、为什么我的 npm 或者 yarn 安装依赖会生成 lock文件,有什么用!

  lock 文件的作用是统一版本号,这对团队协作有很大的作用。若是没有 lock 锁定,根据package.json里面的^,~这些,不同人、不同时间安装出来的版本号不一定一致,有些包甚至有一些breaking change(破坏性的更新),造成开发很难顺利进行!!!

31、我有个复杂组件需要有新增和编辑的功能同时存在,但是字段要保持不变性怎么破

  字段保持不变性怎么理解呢? 就是说比如新增和编辑同时共享一份 data

  有一种就是路由变了,组件渲染同一个(不引起组件的重新渲染和销毁!),但是功能却不同(新增和编译)。比如从编辑切到新增,data必须为空白没有赋值的,等待我们去赋值。这时候有个东西就特别适合了,那就是immutable-js,这个东西可以模拟数据的唯一性,或者叫做不变性。

32、Vue PC(桌面)端、M(mobile:移动)端,用什么 UI 框架好?

  PC:推荐的只有两个 element UIiview

  Mobile:推荐Vux

  当然还有很多,但是基本用户的认知度都不高,这三个比较流行

Vue使用中遇到问题汇总(一)32个的更多相关文章

  1. Vue使用中遇到问题汇总(三)

    1.后台session过期前端跳转到登录页面 axios 拦截器 可以拦截请求和返回,对于失效的情况后端可以返回一个状态码,如401, 使用axios拦截时判断是401,则跳转到指定页面,如login ...

  2. Vue使用中遇到问题汇总(二)

    1.vue cli使用npm run dev报错cannot get / config/index.js里有两个环境:一个是build,一个dev. 在config/index.js里面修改,buil ...

  3. QC学习二:QC使用中问题点汇总

    QC 使用中问题点汇总,包括以下方面: 1.不兼容IE7,IE8的问题(服务器端设置) 2.无法在Win 7下正常下载页面(客户端设置) 3.在QC中填写中文内容后无法正常提交到数据库(客户端设置) ...

  4. QC使用中问题点汇总

    QC 使用中问题点汇总,包括以下四个方面: 1.不兼容IE7,IE8的问题(服务器端设置) 2.无法在Win 7下正常下载页面(客户端设置) 3.在QC中填写中文内容后无法正常提交到数据库(客户端设置 ...

  5. Vue常用开源项目汇总

    前言:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还 ...

  6. 这可能是目前最新的 Vue 相关开源项目库汇总(转)

    访问地址:https://juejin.im/entry/58bf745fa22b9d0058895a58 原文链接:https://github.com/opendigg/awesome-githu ...

  7. 最新的 Vue 相关开源项目库汇总

    优秀的vue 开源后台管理开源系统框架 https://panjiachen.github.io/vue-element-admin-site/#/zh-cn/README UI组件 开发框架 实用库 ...

  8. Vue相关开源项目库汇总

    https://github.com/opendigg/awesome-github-vue http://www.opendigg.com/tags/front-vue README.md 内容 U ...

  9. Vue相关开源项目库汇总 http://www.opendigg.com/tags/front-vue

    awesome-github-vue 是由OpenDigg整理并维护的Vue相关开源项目库集合.我们会定期同步OpenDigg上的项目到这里,也欢迎各位提交项目给我们. 如果收录的项目有错误,可以通过 ...

随机推荐

  1. 六:ZooKeeper的java客户端api的使用

    一:客户端链接测试 package com.yeepay.sxf.createConnection; import java.io.IOException; import org.apache.zoo ...

  2. Python批量查找和删除文件操作

    查找文件夹下的所有子文件 import os allfile=[] def dirlist(path): filelist=os.listdir(path) #fpath=os.getcwd() fo ...

  3. umount.nfs: device is busy解决办法

    fuser -km /app/nfs/ https://blog.csdn.net/x_i_y_u_e/article/details/42914817

  4. 【JBPM4】流程任务变量存取

    任务变量与流程变量的操作相同,前者帮定任务ID,后者绑定流程ID. 添加任务变量 //创建流程引擎 ProcessEngine processEngine = Configuration.getPro ...

  5. 服务器迁移到 Windows Servec 2008 R2 64 bit 和IIS 7问题记录

    近期公司把网站迁移到了新的环境,windows service 2008 64 bit 和IIS 7,问题有点多,对系统使用影响很多,也困扰了我几个星期,现在记录一些主要的注意点 1.组件权限 系统使 ...

  6. sublime text光标移入移出括号的快捷键设置

    使用sublime text每次输入完一个函数或者标签,光标一般都是停留在括号中间,要跳出来要使用左右方向键或者end键 这俩键键区比较远,按起来麻烦,可以自己设置快捷键实现跳出的功能. 原来的快捷键 ...

  7. 【C#】构建可枚举类型(IEnumerable和IEnumerator)

    为了开始对实现既有接口的了解,我们就看一下IEnumerable和IEnumerator的作用,想一下,C#支持关键字foreach,允许我们遍历任何数组类型的内容: //遍历数组的项 ,,} for ...

  8. DelegatingFilterProxy干了什么?

    org.springframework.web.filter.DelegatingFilterProxy 一般情况,创建一个Filter是交给自己来实现的.基于servlet规范,在web.xml中配 ...

  9. 线程间操作无效: 从不是创建控件“textBox2”的线程访问它

    如何:对 Windows 窗体控件进行线程安全调用 线程间操作无效: 从不是创建控件的线程访问它的三种方法 如果使用多线程处理来提高 Windows 窗体应用程序的性能,则你必须确保以线程安全的方式调 ...

  10. [BZOJ4025]二分图(线段树分治,并查集)

    4025: 二分图 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2191  Solved: 800[Submit][Status][Discuss] ...