Vue错误汇总二
1.vuex的modules中commit is not defined
主store内容如下:
1 | import Vue from 'vue'; |
simulation.js文件内容
1 | import Vue from 'vue' |
模块的使用:store.state.simulation ,获取到模块中的state。
1.vuex中mutations一个方法需要调用另外一个方法 在vuex中的mutations方法,想调用mutations中的另外一方法,还是用commit,只需要使用this.commit(‘function’),当前的this指向的就是当前模块中的mutations;
2.vuex 多模块时 模块内部的mutation和action的调用方式
2.键盘事件@keyUp不起作用
这个问题很奇怪,就是说,这个keyup事件,有时候能起作用,但是有时候不会起作用。
1 | <div class="shape" @keyup="handleKeyUp"></div> |
【解决方案】
也就是说,在div上单纯的监听键盘事件是不行的,需要使用 window 或者是 document 进行键盘事件的监听
1.vue element-ui 绑定@keyup事件无效 这里给出的方法:加上.native覆盖原有封装的keyup事件即可,但是无效
2.vue键盘事件不生效 如果元素没有获取焦点,keyup事件无法生效。解决办法一: 按钮添加自定义指令(获取焦点),添加事件修饰符,ok搞定;解决办法二:把事件绑定到父元素(外框)
3.发现给div绑定keyup.enter事件是没有效果的。那该如何实现呢?下面直接上代码吧 在created的生命周期中,写一个全局的enter事件,使用document.onkeyup
4.[面试官系列] input、change、keydown、keypress、keyup 触发的时机是?
5.VUE中@keyup.enter无法触发没有效果 @click 和 @keyup.enter不能一起使用,可以将@keyup.enter绑定到input框上。这个观点我不敢苟同
6.前端杂症–div等容器keydown事件无效(包括vue的@keydown) onKeydown事件触发条件:容器中某个元素获取焦点时,按键。因此无效的原因是当前容器内并没有元素获取焦点。
7.Vue:div上绑定键盘的enter事件
3.Uncaught (in promise) NavigationDuplicated:Avoided redundant
这个问题,是由于路由重复导致的,多数的解决方案就是添加
1 | import Vue from 'vue' |
【解决方法】
为路由增加回调函数,捕获错误。
1 | this.$router.replace({ |
1.Vue-Router 路由重复点击时报错 Uncaught (in promise) NavigationDuplicated:Avoided redundant navigation to current location 的解决方法
2.解决vue-router报NavigationDuplicated: Avoided redundant navigation to current location 的问题
3.前端开发:Vue 项目报错 NavigationDuplicated:Avoided redundant navigation to current location:“/XXX”的解决方法
4.How to solve Avoided redundant navigation to current location error in vue? 这里提供的解决方案,是捕获错误的方式
5.解决vue项目Vue-router 报NavigationDuplicated: “Navigating to current location (“”) is not allowed”的问题 两种方法,第一种就是:重写路由的push方法;第二种:每个$router.push增加回调函数
4.not found:regenerator-runtime/runtime.js
这个问题挺奇怪的,就是我同一份的package.json,在windows上没有问题,但是在Deepin上 npm run 就会出现问题。
1 | npm i regenerator-runtime |
5.To install it, you can run: npm install –save !xml-loader!../../src/svg
这是别人写的程序用到了vue-svg-icon这个插件,我安装的时候,总是报上面的错误。很多的文章可能出自同一个人之手,就是说再src目录下新建一个svg目录,图表放在里面,就可以解决问题了,但是很遗憾,我明明就有这个目录的,还是不行的。
1 | // 这个方法并不行 |
【解决方法】
打开vue-svg-icon的源码路径:node_modules\vue-svg-icon\Icon.vue,找到地77行,然后将下面的src/svg路径修改一下就可以了。
1 | icon() { |
1.vue-svg-icon报错 这个就是添加svg目录的方案,根本不可行
2.vue问题记录svg-icon报错,iconclass 这是另外的一个插件
3.【vue-svg-icon】 !xml-loader! install error 这个问题一模一样,最后楼主换了组件库了
4.SVG 使用教程:如何在 Vue 中使用 SVG icon 图标系统 自己写了svg-icon的使用,感觉特别的麻烦
5.vue-svg-icon 这个就是代码库,也说了是因为找不到src/svg文件夹,但是我明明就已经有了src/svg文件夹了。
6.echarts切换页面不显示问题
这个问题比较特别(好像我遇到的全部的问题都非常的特别),就是我在页面中创建了一个折线图,在本地测试的时候,没有问题,但是部署到服务器上之后,切换页面的时候,就出现问题了,图表出不来了。
【解决方法】
解决方法就是在切换页面的时候,清空echart图表,这样就不会有问题了。
1 | onBeforeUnmount(()=>{ |
1.Vue打包后Echarts图表不显示问题解决
7.cannot reference locally declared variables because it will be hoisted outside of the setup() function.
这个问题就是我在 withDefaults 函数外部定义了变量 baseUrl,然后在 withDefaults 中引入了。
1 | <script setup lang="ts"> |
【解决】
修改为下面的东西就好了。
1 | <script setup lang="ts"> |
8.Uncaught (in promise) SyntaxError: Unexpected token ‘<’, “<!DOCTYPE “… is not valid JSON
本地开发没有问题,但是通过 pnpm build 打包之后,就出现了这么一个莫名其妙的问题。
这个问题算是悬而未决的,幸好项目不是很大,我只能重新进行项目搭建了。
后来经过重新搭建项目,我终于找到了问题的原因,这个代价还是蛮大的。问题主要就出现在了上面的那个问题的这个url配置上面,url:import.meta.env.BASE_URL + “config/config.json”, 我本意是使用环境变量中的内容进行替换,我在环境变量 .env.production 文件中写入了一个变量:VITE_BASE_URL=”/dxs/“,我本意是引用这个变量的,结果写成了 import.meta.env.BASE_URL + “config/config.json”,那么自然而然的就是请求了错误的json文件,结果导致了问题出现。
【解决方法】
解决方法就是将 import.meta.env.BASE_URL 替换为 import.meta.env.VITE_BASE_URL,默认的 import.meta.env.BASE_URL 就是项目名称,不加后面的斜杠的,.env.production 文件中的变量改为:VITE_BASE_URL=”/dxs”
1 | const props = withDefaults( |
9.Failed to load plugin ‘n’ declared in ‘.eslintrc.js
Vue3打包的时候,在macos上没有问题,但是到了windows系统上,运行 pnpm build 的时候就出现了问题。
【解决方案】
重新安装 eslint-plugin-n 插件。
1 | pnpm add eslint-plugin-n -D |
1.eslint Error: Failed to load plugin : Cannot find module ‘eslint-plugin-‘ 报错缺少某个工具时,npm全局安装它
2.eslint-plugin-n
10.Failed to parse source for import analysis because the content contains invalid JS syntax
【解决方案】
就是部分的语法写错了,没有括号闭合之类的错误。